gpt4 book ai didi

python - 列表理解返回错误的结果

转载 作者:太空宇宙 更新时间:2023-11-03 12:12:52 25 4
gpt4 key购买 nike

我一直在搜索,但无法弄清楚这件事。

我有 Java 背景,如果有帮助,正在尝试学习 python。

a = [
(i,j,k) for (i,j,k) in [
(i,j,k) for i in {-4,-2,1,2,5,0}
for j in {-4,-2,1,2,5,0}
for k in {-4,-2,1,2,5,0} if (i+j+k > 0 & (i!=0 & j!=0 & k!=0))
]
]

语句是:获取所有总和为零的元组,但其中不应该有 0。

始终,此结果由所有元组组成。 :(

最佳答案

您使用了错误的运算符。你要boolean and ; & is a bitwise operator :

[(i,j,k) for (i,j,k) in [(i,j,k) for i  in {-4,-2,1,2,5,0} for j in {-4,-2,1,2,5,0} for k in {-4,-2,1,2,5,0}  if  (i+j+k > 0 and (i!=0 and j!=0 and k!=0)) ]  ]

您可以消除嵌套列表理解,它是多余的:

[(i,j,k) for i  in {-4,-2,1,2,5,0} for j in {-4,-2,1,2,5,0} for k in {-4,-2,1,2,5,0}  if  (i+j+k > 0 and (i!=0 and j!=0 and k!=0))]

接下来,使用 itertools.product() function生成所有组合而不是嵌套循环,以及 all()测试所有值是否非零:

from itertools import product
[t for t in product({-4,-2,1,2,5,0}, repeat=3) if sum(t) > 0 and all(t)]

但您也可以从集合中省略 0 并为自己保存 all() 测试:

from itertools import product
[t for t in product({-4,-2,1,2,5}, repeat=3) if sum(t) > 0]

也许您想将该测试更正为 等于 为 0:

from itertools import product
[t for t in product({-4,-2,1,2,5}, repeat=3) if sum(t) == 0]

结果:

>>> [t for t in product({-4,-2,1,2,5}, repeat=3) if sum(t) == 0]
[(1, 1, -2), (1, -2, 1), (2, 2, -4), (2, -4, 2), (-4, 2, 2), (-2, 1, 1)]

关于python - 列表理解返回错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17564787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com