我想从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]
不使用任何外部库,我该怎么做?
perm = [(i,j) for i in list[0] for j in list[1]]
尽管您将必须知道有多少个列表,如果3,则将为此单独编写一些内容。我建议使用itertools使生活更轻松。
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'
,等等。] >>