字母列表列表的乘积 [[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']
我有一个单词中每个字母的可能字母列表..我想找到所有可能的单词。
例如输入是 [[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']