有没有一种简单的方法来编写生成器来生成k个元素长的所有列表,其中每个元素的范围从1到n?
因此,如果k = 3且n = 3,则会生成
[1,1,1]
[1,1,2]
[1,1,3]
[1,2,1]
[1,2,2]
[1,2,3]
[1,3,1]
...
[3,3,1]
[3,3,2]
[3,3,3]
答案 0 :(得分:5)
import itertools
gen = itertools.product(range(1, k+1), repeat=n)
这将生成元组,如果您想要列表,则可以使用itertools.imap()
或生成器表达式,例如:
gen = (list(t) for t in itertools.product(range(1, k+1), repeat=n))