1

我想通过字符列表生成一个单词列表,例如:

A=[['a','b','c'],['d'],['e','f']]

wherea[0]将所有可能的字符存储在第一位,a[1]将所有可能的字符存储在第二位,依此类推。列表“A”生成的所有可能的单词将是:

ade
adf
bde
bdf
cde
cdf

我通过以下方式生成此列表:

for i in a[0]:
    for j in a[1]:
        for k in a[2]:
            print i+j+k

此代码适用于固定长度的list(i.e. len(A)). 我想编写一个通用代码,它可以按任何大小的列表生成词表。

4

1 回答 1

3

你可以这样做itertools.product

>>> from itertools import product
>>> characters = [['a','b','c'],['d'],['e','f']]
>>> [''.join(item) for item in product(*characters)]
['ade', 'adf', 'bde', 'bdf', 'cde', 'cdf']

这将与子列表的长度无关,因为该product方法计算子列表元素的笛卡尔积。此外,由于我们使用 python*characters魔术传递子列表,我们可以传递任意数量的子列表。

于 2014-11-11T14:27:41.393 回答