查找多个数组的所有可能组合(其中所有组合还包括数组中的所有项)



因此,基本上,我想生成5个列表的所有可能组合,不过为了简化起见,我现在只选择3个。以下是列表:

five=["fivea","fiveb","fivec","fived"] 
six=["sixa","sixb","sixc","sixd"] 
seven=["sevena","sevenb","sevenc","sevend"]

但我发现的所有解决方案都是以这样的组合方式将它们组合在一起

"fivea","sixa","sevena"

将被允许。不过,我需要它的方式是一个组合,所有数组都保持完整,只是顺序不同,没有一个可以被丢弃。

目前还不完全清楚您想要的结果是什么,但我认为itertools.product()正是您想要的。。。

from itertools import product
five=["fivea","fiveb","fivec","fived"] 
six=["sixa","sixb","sixc","sixd"] 
seven=["sevena","sevenb","sevenc","sevend"]
my_lists = [five, six, seven]
for item in product(*my_lists):
print(item)

收益率

('fivea', 'sixa', 'sevena')
('fivea', 'sixa', 'sevenb')
('fivea', 'sixa', 'sevenc')
('fivea', 'sixa', 'sevend')
('fivea', 'sixb', 'sevena')
('fivea', 'sixb', 'sevenb')
('fivea', 'sixb', 'sevenc')
('fivea', 'sixb', 'sevend')
('fivea', 'sixc', 'sevena')
('fivea', 'sixc', 'sevenb')
('fivea', 'sixc', 'sevenc')
('fivea', 'sixc', 'sevend')
('fivea', 'sixd', 'sevena')
('fivea', 'sixd', 'sevenb')
('fivea', 'sixd', 'sevenc')
('fivea', 'sixd', 'sevend')
('fiveb', 'sixa', 'sevena')
('fiveb', 'sixa', 'sevenb')
...
('fived', 'sixd', 'sevend')

使用所有元素的排列。。。使用缩短的列表

from itertools import permutations as p
five=["fivea","fiveb"] 
six=["sixa","sixb","sixc"] 
seven=["sevena","sevenb"]
my_lists = [five, six, seven]
# flatten it out...
my_items = [item for sublist in my_lists for item in sublist ]
print(my_items)
for perm in p(my_items, len(my_items)):
print(perm)

最新更新