python - 如何从 n 个列表中形成所有可能的组合
问题描述
这个问题很难在标题中用词,所以需要一个例子:
我有 3 个列表:
L1 = ["Eagle", "Panther"]
L2 = ["Warrior", "Talon", "Machete"]
L3 = ["Feather", "Raptor", "Hunter", "Piranha"]
列表可以有不同的大小。
我想形成所有子集{[a,b,c]}
,例如a
in L1
, b
in L2
, c
inL3
一个例子如下:
{["Eagle", "Warrior", "Feather"], ["Eagle", "Warrior", "Raptor"], ["Panther", "Machete", "Feather"]...}
["Eagle", "Warrior", "Feather"]
与 相同["Eagle", "Feather", "Warrior"]
,因此顺序无关紧要。
我只需要所有的子集。
我看到了很多帖子,我可以在其中形成列表的子集,但在这里找不到我要查找的内容。我显然可以循环并做到这一点,但想知道是否有itertools
解决方案
解决方案
import itertools
L1 = ["Eagle", "Panther"]
L2 = ["Warrior", "Talon", "Machete"]
L3 = ["Feather", "Raptor", "Hunter", "Piranha"]
for x in itertools.product(L1,L2,L3):
print(x)
输出
('Eagle', 'Warrior', 'Feather')
('Eagle', 'Warrior', 'Raptor')
('Eagle', 'Warrior', 'Hunter')
('Eagle', 'Warrior', 'Piranha')
('Eagle', 'Talon', 'Feather')
('Eagle', 'Talon', 'Raptor')
('Eagle', 'Talon', 'Hunter')
('Eagle', 'Talon', 'Piranha')
('Eagle', 'Machete', 'Feather')
('Eagle', 'Machete', 'Raptor')
('Eagle', 'Machete', 'Hunter')
('Eagle', 'Machete', 'Piranha')
('Panther', 'Warrior', 'Feather')
('Panther', 'Warrior', 'Raptor')
('Panther', 'Warrior', 'Hunter')
('Panther', 'Warrior', 'Piranha')
('Panther', 'Talon', 'Feather')
('Panther', 'Talon', 'Raptor')
('Panther', 'Talon', 'Hunter')
('Panther', 'Talon', 'Piranha')
('Panther', 'Machete', 'Feather')
('Panther', 'Machete', 'Raptor')
('Panther', 'Machete', 'Hunter')
('Panther', 'Machete', 'Piranha')