Python 生成具有相同长度的列表组合

Python 生成具有相同长度的列表组合,python,Python,好的,如果你使用这个,你会得到一个列表的可能组合 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,

好的,如果你使用这个,你会得到一个列表的可能组合

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)

或者另一个代码可以做到这一点?

如果输出顺序无关紧要,您可以将
stuff
上的项打开到长度为2的列表,其中第一个数字为0,并使用:

>>> 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)]