我使用此代码生成数字组合,例如123
from itertools import combinations
for i in set(combinations('123',2)):
print(''.join(i))
我在这里得到了所需的输出
13
12
23
但是当我使用133
时,我得到了
13
33
但我想忽略重复,我希望输出为
13
13
33
有替代方法吗?
答案 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