リストとそれ自体のデカルト積が必要なようです。使用itertools.product()
:
>>> import itertools, pprint
>>> mylist = ["Eat","Sleep","Drink"]
>>> my_combination = list(itertools.product(mylist, repeat = 2))
>>> pprint.pprint (my_combination)
[('Eat', 'Eat'),
('Eat', 'Sleep'),
('Eat', 'Drink'),
('Sleep', 'Eat'),
('Sleep', 'Sleep'),
('Sleep', 'Drink'),
('Drink', 'Eat'),
('Drink', 'Sleep'),
('Drink', 'Drink')]
オプションのrepeat
引数は、リストの「深さ」を制御します。
リストのサイズは、深さとともに指数関数的に増加することに注意してくださいN
。一度にリスト全体を具体化しないでください。代わりに、一度に 1 つの要素を使用してください。
# Don't do this - will crash Python with out-of-memory error
list(itertools.product(my_list, repeat = 100000))
# Iterate over the list instead
for one_combination in itertools.product(my_list, repeat = 100000):
print (one_combination)