Python:遍历列表

Python: iterate through a list

我想用 python 解决一个智力挑战谜题。 他们给出了 4 个数字(25、28、38、35),他们希望我们将这些数字放在 ...+...-...=... 中,一种可能的解决方案是 25+38-35=28。我试过,从数字中列出一个列表,用一些循环和一个 if 来迭代它们: lst=[25, 28, 38, 35]

for z in lst:
    for x in lst:
        for c in lst:
            for v in lst:
                 if z+x-c==v:
                     print z,x,c,v

但是当 运行 for 循环时,它们会重复数字 (25+25-25=25),这不起作用。我该如何解决?

正如 Luis 的评论所暗示的那样,一个好的方法是

import itertools

for z, x, c, v in itertools.permutations(lst):
    if z+x-c==v:
        print z,x,c,v

"flat is better than nested",因为 import this 在交互式 Python 提示中会提醒您:-)

Def recadd(lis):
       If lis[0] + lis[1] - lis[2]] = lis[3]:
                return lis
       Else: 
               recadd(lis[3] + lis[0:2])
               recadd(lis[0] + lis[3] + lis[1:2])
               recadd(lis[0:1] + lis[3]. + lis[2])

在我的手机上进行快速而肮脏的破解,可以优雅地扩展为 k 个数字,未经测试但它应该可以工作。

编辑:意识到如果没有 solution.infinite 递归,这将不起作用...