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