Создать список слов по списку списка символов

Я хочу создать список слов по списку символов, например:

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

где a[0] хранит все возможные символы на первом месте, a[1] хранит все возможные символы на втором месте и так далее. Все возможные слова, сгенерированные списком "А", будут:

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)), Я хочу написать обобщающий код, который может генерировать список слов по списку любого размера.

1 ответ

Решение

Вы можете сделать это с 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 магия, мы можем передать любое количество подсписков.

Другие вопросы по тегам