Я не верю, что этот точный вопрос задавался ранее. Недавно я столкнулся с проблемой, когда мне нужно было найти именно такой набор. Пример мог бы помочь: -
Учитывая некоторый список:
list1 = ['a', 'b']
Есть ли функция, которая возвращает следующий набор?
output = {('a', 'b'), ('a', 'a'), ('b', 'b'), ('b', 'a')}
Мне удалось сгенерируйте желаемый результат, используя функции itertools
combinations_with_replacement
и permutations
, следующим образом:
from itertools import combinations_with_replacement, permutations
set1 = set(combinations_with_replacement(['a', 'b'], 2))
set2 = set(permutations(['a', 'b'], 2))
>>> set1
{('a', 'b'), ('a', 'a'), ('b', 'b')}
>>> set2
{('b', 'a'), ('a', 'b')}
set1.update(set2)
>>> set1
{('a', 'b'), ('a', 'a'), ('b', 'b'), ('b', 'a')}
Есть ли название для такого набора? Есть ли альтернативный метод, который я могу использовать?