tma*_*ric 0 python python-itertools
我试图使用itertools来计算['a', 'b', 'c']使用combinations_with_replacement重复元素的列表的所有组合.问题在于索引似乎用于区分元素:
返回输入iterable中元素的r长度子序列,允许单个元素重复多次.
组合以字典排序顺序发出.因此,如果对输入iterable进行排序,则将按排序顺序生成组合元组.
元素根据其位置而不是其价值被视为唯一元素.因此,如果输入元素是唯一的,则生成的组合也将是唯一的.
请输入以下代码段:
import itertools
for item in itertools.combinations_with_replacement(['a','b','c'], 3):
print (item)
Run Code Online (Sandbox Code Playgroud)
结果输出:
('a', 'a', 'a')
('a', 'a', 'b')
('a', 'a', 'c')
('a', 'b', 'b')
('a', 'b', 'c')
('a', 'c', 'c')
('b', 'b', 'b')
('b', 'b', 'c')
('b', 'c', 'c')
('c', 'c', 'c')
Run Code Online (Sandbox Code Playgroud)
我需要的是组合集包含以下元素:('a', 'b', 'a')似乎缺少.如何计算完整的组合集?
这听起来像你想要的itertools.product:
>>> from itertools import product
>>> for item in product(['a', 'b', 'c'], repeat=3):
... print item
...
('a', 'a', 'a')
('a', 'a', 'b')
('a', 'a', 'c')
('a', 'b', 'a')
('a', 'b', 'b')
('a', 'b', 'c')
('a', 'c', 'a')
('a', 'c', 'b')
('a', 'c', 'c')
('b', 'a', 'a')
('b', 'a', 'b')
('b', 'a', 'c')
('b', 'b', 'a')
('b', 'b', 'b')
('b', 'b', 'c')
('b', 'c', 'a')
('b', 'c', 'b')
('b', 'c', 'c')
('c', 'a', 'a')
('c', 'a', 'b')
('c', 'a', 'c')
('c', 'b', 'a')
('c', 'b', 'b')
('c', 'b', 'c')
('c', 'c', 'a')
('c', 'c', 'b')
('c', 'c', 'c')
>>>
Run Code Online (Sandbox Code Playgroud)