按字符列表列表生成单词列表

时间:2014-11-11 14:25:36

标签: python python-2.7 word-list

我想按字符列表列表生成一个单词列表,如:

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

其中a[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))的固定长度。我想编写一个通用代码,可以按任意大小的列表生成wordlist。

1 个答案:

答案 0 :(得分: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 magic传递子列表,我们可以传递任意数量的子列表。