2015-01-01 2 views
-1

У меня нет ни малейшего понятия, как искать это, однако я не могу найти очевидное решение для моей проблемы с питоном. Я хотел бы объединить два списка (один из них управляется одним из другого) и переставить их, сохраняя длину списков постоянными.Объединить два списка по-питоновски

Пример:

a = ['A','B','C','D'] 
b = ['a','b','c','d'] 

combined = [['a','B','C','D'], ['A','b','C','D'], ..., ['a','b','c','d']] 

И тогда я могу переставлять их с помощью itertools. Однако первый шаг для меня непросто. Я не хочу, вложенным для петель и Ко

ответ

7

Использование zip, itertools.product и list comprehension:

>>> import itertools 
>>> a = ['A','B','C','D'] 
>>> b = ['a','b','c','d'] # [x.lower() for x in a] 
>>> [list(x) for x in itertools.product(*zip(a, b))] 
[['A', 'B', 'C', 'D'], ['A', 'B', 'C', 'd'], ['A', 'B', 'c', 'D'], 
['A', 'B', 'c', 'd'], ['A', 'b', 'C', 'D'], ['A', 'b', 'C', 'd'], 
['A', 'b', 'c', 'D'], ['A', 'b', 'c', 'd'], ['a', 'B', 'C', 'D'], 
['a', 'B', 'C', 'd'], ['a', 'B', 'c', 'D'], ['a', 'B', 'c', 'd'], 
['a', 'b', 'C', 'D'], ['a', 'b', 'C', 'd'], ['a', 'b', 'c', 'D'], 
['a', 'b', 'c', 'd']] 
+0

Ты мой гений! Спасибо. Что означает * zip? – anki

+0

@anki, 'zip (a, b)' будет возвращать '[('A', 'a'), ('B', 'b'), ('C', 'c'), ('D' , 'd')] 'в Python 2.x. (возвращает соответствующий итератор в Python 3.x). Для получения дополнительной информации о каждой функции, пожалуйста, следуйте ссылкам в ответе. – falsetru

+0

Поблагодарили: – anki

Смежные вопросы