字母列表列表的乘积 [[a,b],[c,d],[a,n]]

product of list of list of letter [[a,b],[c,d],[a,n]]

我有一个单词中每个字母的可能字母列表..我想找到所有可能的单词。

例如输入是 [[l,b],[e,d],[s,t]] 这表示一个 3 个字母的单词,其中第一个字母可以是 l 或 b,第二个字母可以是 e 或 d,第三个字母可以是 s 或 t。我不会输出这些列表的结果 [les,let,bet,...等等]。该列表可以是任意长度,而不仅仅是三个。 我试过了

res = list(map(prod, zip(test_list)))

但我明白了

[<itertools.product object at 0x0000024F65AEC600>, <itertools.product object at 0x0000024F65AEC640>, <itertools.product object at 0x0000024F65AEC680>, <itertools.product object at 0x0000024F65AEC6C0>]

我试过了

word1=list(product(letter[0],letter[1],letter[2]))

它工作得很好,但我希望代码接受任何长度的 pf 列表

您不想 zip test_list,只需使用 * 运算符将它的每个元素作为参数传递给 product

>>> test_list = [['l','b'],['e','d'],['s','t']]
>>> import itertools
>>> list(itertools.product(*test_list))
[('l', 'e', 's'), ('l', 'e', 't'), ('l', 'd', 's'), ('l', 'd', 't'), ('b', 'e', 's'), ('b', 'e', 't'), ('b', 'd', 's'), ('b', 'd', 't')]

如果您希望结果为字符串形式,请使用join:

>>> [''.join(p) for p in itertools.product(*test_list)]
['les', 'let', 'lds', 'ldt', 'bes', 'bet', 'bds', 'bdt']