gpt4 book ai didi

python - Python 中的理解以从列表中采样元组

转载 作者:太空狗 更新时间:2023-10-29 17:42:44 25 4
gpt4 key购买 nike

我正在尝试从列表 [-4, -2, 1, 2, 5, 0] 中获取三元素元组的列表使用理解,并检查它们是否满足条件 sum([] == 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 sum([i, j, k]) == 0
]

输出:

[(-4, 2, 2), (-2, 1, 1), (-2, 2, 0), (-2, 0, 2), (1, -2, 1), 
(1, 1, -2), (2, -4, 2), (2, -2, 0), (2, 2, -4), (2, 0, -2),
(0, -2, 2), (0, 2, -2), (0, 0, 0)]

问题是搜索类似 (i, j, k) for i, j, k in [-4, -2, 1, 2, 5, 0] 的表达式.

最佳答案

您可以使用 itertools.product隐藏列表理解中的嵌套循环。使用 repeat 参数设置列表的循环次数(即元组中的元素数):

>>> import itertools
>>> lst = [-4, -2, 1, 2, 5, 0]
>>> [x for x in itertools.product(lst, repeat=3) if sum(x) == 0]
[(-4, 2, 2),
(-2, 1, 1),
(-2, 2, 0),
(-2, 0, 2),
(1, -2, 1),
(1, 1, -2),
(2, -4, 2),
(2, -2, 0),
(2, 2, -4),
(2, 0, -2),
(0, -2, 2),
(0, 2, -2),
(0, 0, 0)]

关于python - Python 中的理解以从列表中采样元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34832058/

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