从大的单词列表中构建字符串

时间:2018-02-05 09:42:15

标签: python search design-patterns

我不知道这个algmay的着名类型......

我听了这个表格

L = [ ["a"] , ["b"] , ["c"] ] , [ ["d"] , ["e"] , ["f"] ] , ["g"], ["h"], ["i"] ] ,[ ["j"] , ["k"] , ["l"] ]

其中字母是单词,L的长度可以是2到50个元素,但列表中的长度总是3个元素。

我想创建一个构建所有字符串的列表:

"adgj"
"adgk"
"adgl"
"adhj"
"adhk"
"adhl"
"adij"
"adik"
"adil"
"aegj"

一直到"cfil"

有人可以告诉我该做什么或在哪里寻找?

感谢您的帮助..

2 个答案:

答案 0 :(得分:5)

您可以使用itertools.product来有效实现这一目标:

import itertools

L = [['a'], ['b'], ['c']], [['d'], ['e'], ['f']], [['g'], ['h'], ['i']], [['j'], ['k'], ['l']]

for item in itertools.product(*L):
    ''.join([str(x) for y in item for x in y])

答案 1 :(得分:2)

如果您不想使用任何其他模块并自行完成所有工作,请按照以下代码为您提供结果,

L = [[ ["a"] , ["b"] , ["c"] ] , [ ["d"] , ["e"] , ["f"] ] , [["g"], ["h"], ["i"] ] ,[ ["j"] , ["k"] , ["l"] ]]
words = []

def a(string):
  i = len(string)
  if(i==len(L)):
    words.append(string)
  else:
    for element in L[i]:
      a(string+element[0])

a('')