Я манипулирую набором, поэтому, если у вас есть набор (он же: список) из n отличительных элементов, то у вас есть 2 ^ n подмножество. Здесь я показываю, как:
def powerset(s):
x = len(s)
masks = [1 << i for i in range(x)]
for i in range(1 << x):
yield [ss for mask, ss in zip(masks, s) if i & mask]
l = list(powerset(["A", "B"]))
print(l)
который дает:
[[], ['A'], ['B'], ['A', 'B']]
Теперь, как можно взять приведенный выше список, исключить пустой список и объединить последний элемент, чтобы он стал:
['A', 'B', 'AB']
Я хочу повторить эту процедуру 5 раз, взяв окончательный вывод и написав его подсписок, исключив пустой список и объединив те элементы, которые попадают в один и тот же подсписок.
itertools
- рецепты для powersets: docs.python.org/3.6 /library/itertools.html#itertools-recipes, которые можно изменить, чтобы исключить пустой набор. а также stackoverflow.com/questions/18035595/ а> - person Patrick Artner   schedule 05.04.2018Set
иlist
в питоне разные. - person Austin   schedule 05.04.2018