【发布时间】:2022-12-24 01:00:54
【问题描述】:
我目前想要一组元素的所有排列替换。
例子:
elements = ['a', 'b']
permutations with replacement =
[('a', 'a', 'a'),
('a', 'a', 'b'),
('a', 'b', 'a'),
('a', 'b', 'b'),
('b', 'a', 'a'),
('b', 'a', 'b'),
('b', 'b', 'a'),
('b', 'b', 'b')]
到目前为止,我能够做到这一点的唯一方法是使用itertools.product,如下所示:
import itertools as it
sample_space = ['a', 'b']
outcomes = it.product(sample_space, sample_space, sample_space)
list(outcomes)
我只是想知道是否有更好的方法来做到这一点,因为很明显,随着样本空间和所需长度变大,这会变得笨拙且容易出错
期待找到类似itertools.permutations(['a', 'b'], length=3, replace=True) 的东西吗?
我试过 itertools.permutations 但唯一的参数是 iterable 和 r,这是所需的长度。
上述示例使用it.permutations(sample_space, 3) 的输出将是一个空列表[]
【问题讨论】:
-
你读过
product文档了吗?看起来不像你做的。 -
list(itertools.product(sample_space, repeat=3))给你你想要的。请注意,repeat是一个 kwarg。 -
@Samwise 怎么做到的“避免在 cmets 中回答问题”?
-
这是节日奇迹!
标签: python combinations permutation python-itertools discrete-mathematics