列表列表的排列

won*_*ng2 14 python

我有一个这样的列表:

l = [['a', 'b', 'c'], ['a', 'b'], ['g', 'h', 'r', 'w']]
Run Code Online (Sandbox Code Playgroud)

我想从每个列表中选择一个元素并将它们组合成一个字符串.

例如:'aag','aah','aar','aaw','abg','abh'....

但是,在程序运行之前,列表l的长度和每个内部列表的长度都是未知的.那我怎么能想要我想要的?

Ign*_*ams 16

采用以前的解决方案,然后使用itertools.product(*l).

  • 拼写出来:`[''.join(s)for s in itertools.product(*l)]` (6认同)

Jas*_*oof 7

如果有人对算法感兴趣,这是使用递归来查找组合的一种非常简单的方法:

 l = [['a', 'b', 'c'], ['a', 'b'], ['g', 'h', 'r', 'w']]
 def permu(lists, prefix=''):
      if not lists:
           print prefix
           return
      first = lists[0]
      rest = lists[1:]
      for letter in first:
           permu(rest, prefix + letter)
 permu(l)
Run Code Online (Sandbox Code Playgroud)