gpt4 book ai didi

python - 生成元素小于或等于给定列表的列表

转载 作者:行者123 更新时间:2023-11-28 20:14:07 26 4
gpt4 key购买 nike

解决以下问题的最 pythonic 方法是什么?

给定一个列表 A,找到所有列表 B,使得 i in range(len(A)): B[i] <= A[i]。我期望的示例:

#Input
A = [1,2,0]
#Output
B = [[0,0,0],
[1,0,0],
[1,1,0],
[1,2,0],
[0,1,0],
[0,2,0]]

提前致谢!

最佳答案

您可以使用 itertools.product 轻松完成此操作

>>> from itertools import product
>>> A
[1, 2, 0]
>>> B = list(product(*[list(range(e+1)) for e in A]))
>>> B
[(0, 0, 0), (0, 1, 0), (0, 2, 0), (1, 0, 0), (1, 1, 0), (1, 2, 0)]
>>>

如果你想要 o/p 作为列表的列表,将元组转换为列表

>>> B = [list(e) for e in B]
>>> B
[[0, 0, 0], [0, 1, 0], [0, 2, 0], [1, 0, 0], [1, 1, 0], [1, 2, 0]]
>>>

如果您不想使用 itertools.product,您可以自定义实现 product

>>> B = [[]]; 
>>> for t in [range(e+1) for e in A]:
... B = [x+[y] for x in B for y in t]
...
>>> B
[[0, 0, 0], [0, 1, 0], [0, 2, 0], [1, 0, 0], [1, 1, 0], [1, 2, 0]]
>>>

关于python - 生成元素小于或等于给定列表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51022485/

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