这个问题很难在标题中表达,因此需要一个示例:
我有3个清单:
L1 = ["Eagle", "Panther"]
L2 = ["Warrior", "Talon", "Machete"]
L3 = ["Feather", "Raptor", "Hunter", "Piranha"]
列表的大小可以不同。
我想形成所有子集
{[a,b,c]}
,以使a
位于L1
中,b
位于L2
中,c
位于L3
中示例如下:
{["Eagle", "Warrior", "Feather"], ["Eagle", "Warrior", "Raptor"], ["Panther", "Machete", "Feather"]...}
["Eagle", "Warrior", "Feather"]
与["Eagle", "Feather", "Warrior"]
相同,因此顺序无关紧要。我只需要所有子集。
我看到了许多帖子,可以在其中形成列表的子集,但在这里找不到我想要的东西。我显然可以循环执行此操作,但是想知道是否有
itertools
解决方案 最佳答案
itertools.product用于此目的。
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')