Похоже, что вы хотите itertools.combinations
:
>>> list(itertools.combinations((1, 2, 3), 2))
[(1, 2), (1, 3), (2, 3)]
Если вы хотите наборы, вам придется конвертировать их явно.Если вы не возражаете против итерации вместо списка и используете Python 3, вы можете использовать map
:
>>> s = set((1, 2, 3))
>>> map(set, itertools.combinations(s, 2))
<map object at 0x10cdc26d8>
. Чтобы просмотреть все результаты одновременно, вы можете передать выводот map
до list
.(В Python 2 вывод map
автоматически представляет собой список.)
>>> list(map(set, itertools.combinations(s, 2)))
[{1, 2}, {1, 3}, {2, 3}]
Однако, если вы знаете, что вам нужен список, понимание списка немного лучше (h / t Джейкоб Бауэр ):
>>> [set(i) for i in itertools.combinations(s, 2)]
[{1, 2}, {1, 3}, {2, 3}]