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 递归,这将不起作用...
我想用 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 递归,这将不起作用...