获取每个元素有 K 个选项的 N 项列表?
Get a list of N items with K selections for each element?
例如,如果我有一个选择集 K
K = ['a','b','c']
和长度 N
N = 4
我想return所有可能的:
['a','a','a','a']
['a','a','a','b']
['a','a','a','c']
['a','a','b','a']
...
['c','c','c','c']
我可以用递归来做,但这并不有趣。有没有更 Pythonic 的方式?
这可以用 itertools
来完成。
>>> K = ['a','b','c']
>>> import itertools
>>> N = 4
>>> i = itertools.product(K,repeat = N)
>>> l = [a for a in i]
>>> l[:3]
[('a', 'a', 'a', 'a'), ('a', 'a', 'a', 'b'), ('a', 'a', 'a', 'c')]
编辑:我意识到你实际上想要 product
, not combinations_with_replacement
。更新代码。
例如,如果我有一个选择集 K
K = ['a','b','c']
和长度 N
N = 4
我想return所有可能的:
['a','a','a','a']
['a','a','a','b']
['a','a','a','c']
['a','a','b','a']
...
['c','c','c','c']
我可以用递归来做,但这并不有趣。有没有更 Pythonic 的方式?
这可以用 itertools
来完成。
>>> K = ['a','b','c']
>>> import itertools
>>> N = 4
>>> i = itertools.product(K,repeat = N)
>>> l = [a for a in i]
>>> l[:3]
[('a', 'a', 'a', 'a'), ('a', 'a', 'a', 'b'), ('a', 'a', 'a', 'c')]
编辑:我意识到你实际上想要 product
, not combinations_with_replacement
。更新代码。