Возможный дубликат:
Создание списка из списка списков в Python
Я пытаюсь найти простой способ превратить многомерный (вложенный) список python в один список, содержащий все элементы подписок.
Например:
A = [[1,2,3,4,5]]
превращается в
A = [1,2,3,4,5]
или
A = [[1,2], [3,4]]
превращается в
A = [1,2,3,4]
Ответ 1
Используйте itertools.chain:
itertools.chain(*iterables)
:
Создайте итератор, который возвращает элементы из первого итерабельного до тех пор, пока он не исчерпан, а затем перейдет к следующему итерируемому, пока все итерации не будут исчерпаны. Используется для обработки последовательных последовательностей в виде одной последовательности.
Пример:
from itertools import chain
A = [[1,2], [3,4]]
print list(chain(*A))
# or better: (available since Python 2.6)
print list(chain.from_iterable(A))
Выход:
[1, 2, 3, 4]
[1, 2, 3, 4]
Ответ 2
Использовать функцию reduce
reduce(lambda x, y: x + y, A, [])
Или sum
sum(A, [])
Ответ 3
первый случай также может быть легко выполнен как:
A=A[0]
Ответ 4
itertools
обеспечивает цепную функцию, что:
С http://docs.python.org/library/itertools.html#recipes:
def flatten(listOfLists):
"Flatten one level of nesting"
return chain.from_iterable(listOfLists)
Обратите внимание, что результат является итерируемым, поэтому вам может понадобиться list(flatten(...))
.