在python中生成重复的组合

时间:2017-04-14 16:20:22

标签: python combinations permutation itertools

我使用此代码生成数字组合,例如123

from itertools import combinations
for i in set(combinations('123',2)):
    print(''.join(i))

我在这里得到了所需的输出

13
12
23

但是当我使用133时,我得到了

13
33

但我想忽略重复,我希望输出为

13
13
33

有替代方法吗?

2 个答案:

答案 0 :(得分:1)

这非常简单。您应该使用列表(组合(' 123',2))而不是设置。 Set减少了相同的值。

答案 1 :(得分:1)

set()本质上,不允许任何重复的元素。 set() 中的每个元素都必须是唯一的。 Python文档记录了这一点:

  

Python还包括集合的数据类型。集合是无序集合,没有重复元素

强调我的。这就是为什么你没有得到预期的输出。当您致电set()时,它会从您的组合中删除重复的13。相反,只需按原样迭代组合对象:

from itertools import combinations

for i in combinations('133', 2): # no call to set()
    print(''.join(i))

哪个输出:

13
13
33