如何在python中获得组合?

时间:2018-11-03 19:59:19

标签: python list itertools

我有一个类似下面的列表,我想找到经过一点点修改的简单排列,

例如

l=['a', 'b']

输出:

[('a', 'a'), ('a', 'b'), ('b', 'b')]

我关注了

Try-1

list(itertools.product(L, repeat=2))

返回

[('a', 'a'), ('a', 'b'), ('b', 'a'), ('b', 'b')]

尝试-2

print list(itertools.permutations(['a', 'b']))

返回

[('a', 'b'), ('b', 'a')]

Try-3

我可以像下面这样

temp= [tuple(sorted((i,j))) for i in ['a', 'b'] for j in ['a', 'b']]
print list(set(temp))

但是解决这个问题似乎无效。

1 个答案:

答案 0 :(得分:5)

使用combinations_with_replacement

from itertools import combinations_with_replacement

l=['a', 'b']
for c in combinations_with_replacement(l, 2):
    print(c)

输出

('a', 'a')
('a', 'b')
('b', 'b')