作者:cuishy | 来源:互联网 | 2023-09-25 21:42
好的,如果您使用它,您将获得列表的可能组合stuff[1,2,3]forLinrange(0,len(stuff)+1):forsubsetinitertools.combinat
好的,如果您使用它,您将获得列表的可能组合
stuff = [1, 2, 3]
for L in range(0, len(stuff)+1):
for subset in itertools.combinations(stuff, L):
print(subset)
结果是
()
(1)
(2)
(3)
(1, 2)
(1, 3)
(2, 3)
(1, 2, 3)
有没有办法改变这个,以便结果
(0, 0, 0)
(1, 0, 0)
(0, 2, 0)
(0, 0, 3)
(1, 2, 0)
(1, 0, 3)
(0, 2, 3)
(1, 2, 3)
或其他代码会这样做?
解决方法:
如果输出顺序无关紧要,您可以将东西上的项目转换为长度为2的列表,其中第一个数字为0并使用itertools.product
:
>>> from itertools import product
>>> stuff = [1, 2, 3]
>>> list(product(*([0, x] for x in stuff)))
[(0, 0, 0), (0, 0, 3), (0, 2, 0), (0, 2, 3), (1, 0, 0), (1, 0, 3), (1, 2, 0), (1, 2, 3)]