如何在python中组合?

Moh*_* ah 0 python list python-itertools

我有一个如下所示的列表,我想找到一点点修改的简单排列,

例如

l=['a', 'b']
Run Code Online (Sandbox Code Playgroud)

输出:

[('a', 'a'), ('a', 'b'), ('b', 'b')]
Run Code Online (Sandbox Code Playgroud)

我跟着,

尝试-1

list(itertools.product(L, repeat=2))
Run Code Online (Sandbox Code Playgroud)

回报,

[('a', 'a'), ('a', 'b'), ('b', 'a'), ('b', 'b')]
Run Code Online (Sandbox Code Playgroud)

试试-2

print list(itertools.permutations(['a', 'b']))
Run Code Online (Sandbox Code Playgroud)

回报,

[('a', 'b'), ('b', 'a')]
Run Code Online (Sandbox Code Playgroud)

尝试-3

我可以这样做,

temp= [tuple(sorted((i,j))) for i in ['a', 'b'] for j in ['a', 'b']]
print list(set(temp))
Run Code Online (Sandbox Code Playgroud)

但这似乎是解决这个问题的低效方法.

Dan*_*ejo 5

使用combination_with_replacement:

from itertools import combinations_with_replacement

l=['a', 'b']
for c in combinations_with_replacement(l, 2):
    print(c)
Run Code Online (Sandbox Code Playgroud)

产量

('a', 'a')
('a', 'b')
('b', 'b')
Run Code Online (Sandbox Code Playgroud)