Python从列表列表中找到所有不同的选择

问题描述 投票:1回答:1

我想从python列表中获得所有不同的选择。例如,使用类似列表,

list=[[a,b,c],[a,d,e]]

我只想从每个列表中选择一个选项,然后获得所有可能的不同选择。所以上面列出的可能的选择看起来像,

    [a,a]
    [a,d]
    [a,e]
    [b,a]
    [b,d]
    [b,e]
    [c,a]
    [c,d]
    [c,e]

不使用任何外部库,我该怎么做?

python list combinations
1个回答
0
投票
您可以使用发电机,

perm = [(i,j) for i in list[0] for j in list[1]]

尽管您将必须知道有多少个列表,如果3,则将为此单独编写一些内容。我建议使用itertools使生活更轻松。    

0
投票
最容易用递归生成器实现。

def yield_combos(lst): if not lst: yield [] return for el in lst[0]: for combo in yield_combos(lst[1:]): yield [el] + combo lst = [['a','b','c'], ['a','d','e']] for combo in yield_combos(lst): print(combo)

如果您希望将输出作为列表,则始终可以将其转换为一个:

print(list(yield_combos(lst)))

未成年人注意事项:

  • 我将问题称为lst的地方称为变量list;覆盖内置函数不是一个好主意,在这种情况下,这样做会阻止对list的调用工作。
  • 为了一个独立的程序,我在调用者中设置了一些字符串值(问题用a代替了'a',等等。] >>
© www.soinside.com 2019 - 2024. All rights reserved.