如何在python中获取大小为k(其中k>列表长度)的列表的所有组合?

kru*_* kp 2 python combinations list permutation python-3.x

这不打印任何内容:

from itertools import combinations
comb = combinations([1,2], 3)
for i in comb:
    print(i)
Run Code Online (Sandbox Code Playgroud)

我想输出为:

(1,2,2) (1,2,1) (1,1,2) (1,1,1) (2,1,2) (2,1,1) (2,2,1) (2,2,2)
Run Code Online (Sandbox Code Playgroud)

Sha*_*ger 5

似乎您只想要product, 而不是combinations

from itertools import product

for i in product([1, 2], repeat=3):
    print(i)
Run Code Online (Sandbox Code Playgroud)

combinations正在为您提供独特的组合,而无需在任何组合中重复使用元素,这意味着从两个源元素中提取三个元素是不可能的。它也是顺序不敏感的,所以它不会给你(1, 2)(2, 1)即使你只要求大小的组合2(只permutations会这样做)。在您的情况下,您似乎希望通过每个索引循环每个元素,允许重复(combinations/permutations不会这样做)和顺序敏感(combinations_with_replacement不会这样做),这会留下product.