如何从n列表中形成子集

2024-05-15 05:05:21 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题在标题中很难用词来表达,因此需要举例说明:

我有三张单子:

L1 = ["Eagle", "Panther"]

L2 = ["Warrior", "Talon", "Machete"]

L3 = ["Feather", "Raptor", "Hunter", "Piranha"]

列表可以有不同的大小。你知道吗

我想形成所有子集{[a,b,c]},这样aL1bL2cL3

示例如下:

{["Eagle", "Warrior", "Feather"], ["Eagle", "Warrior", "Raptor"], ["Panther", "Machete", "Feather"]...}

["Eagle", "Warrior", "Feather"]["Eagle", "Feather", "Warrior"]相同,因此顺序无关紧要。你知道吗

我只需要所有的子集。你知道吗

我看到许多帖子,我可以形成一个列表的子集,但找不到我在这里寻找。我显然可以循环并执行它,但我想知道是否有itertools解决方案


Tags: l1标题列表子集单子eaglefeathertalon
2条回答

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')
import itertools
L1=["Eagle","Panter"]
L2=["Warrior","Talon","Machete"]
L3=["Feather","Raptor","Hunter","Piranha"]
res=set()
for i in itertools.product(L1,L2,L3):
    res.add(tuple(sorted(i)))
print(res)

相关问题 更多 >

    热门问题