Python 从大单词列表中构建字符串
我不知道这种Algmaye的类型因为它很有名 我有一张这张表格的清单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
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
将死亡。