Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从大单词列表中构建字符串_Python_Search_Design Patterns - Fatal编程技术网

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

Python 从大单词列表中构建字符串,python,search,design-patterns,Python,Search,Design Patterns,我不知道这种Algmaye的类型因为它很有名 我有一张这张表格的清单 L = [ ["a"] , ["b"] , ["c"] ] , [ ["d"] , ["e"] , ["f"] ] , ["g"], ["h"], ["i"] ] ,[ ["j"] , ["k"] , ["l"] ] 其中字母是单词,L的长度可以是2到50个元素,但列表中始终有3个元素长 我想创建一个列表,列出构建所有字符串的人: "adgj" "adgk" "adgl" "adhj" "adhk" "adhl" "adij

我不知道这种Algmaye的类型因为它很有名

我有一张这张表格的清单

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"
ect一直到
“cfil”

有人能告诉我该做什么或去哪里找吗


非常感谢您的帮助。

您可以使用
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])

如果您不想使用任何其他模块并自己完成所有工作,下面的代码将给出结果

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('')

您的
L
不是有效的Python对象。括号不平衡。我很好奇在这种情况下使用的可能性。如果可行,您认为它是如何实现的?
组合
方法通常用于单个列表内的组合,而不是跨列表的组合-因此,产品更适合这里。这可能是可行的,但我想不出一个简单的方法。我得到了一个
ImportError:No module named product
错误。另外,真的需要str(x)吗?无论如何,您都在处理字符串。此外,如果您希望使其可读性降低,但缩短,您可以使用
链替换列表理解。from_iterable
;-)<代码>''.join(chain.from_iterable(item))@MaciejGol-修复了导入行-谢谢。这里可能不需要
str
,但这是一种很好的做法,因为如果它不是字符串,那么
join
将死亡。