Python:遍历列表

时间:2015-01-22 17:41:25

标签: python list loops

我有一个想要使用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)并且不起作用。我怎么解决呢?

2 个答案:

答案 0 :(得分:9)

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

import itertools

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

“flat优于嵌套”,因为交互式Python提示符下的import this会提醒您: - )

答案 1 :(得分:1)

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号码,未经测试但它应该有效。

编辑:意识到如果没有解决方案,这将无效。无限递归......