Как получить комбинацию в питоне? - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть список, как показано ниже, я хочу найти простую перестановку с небольшим изменением,

Например

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 голосов
/ 03 ноября 2018

Использовать комбинаций_ с_заменой :

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')
...