Как раскрутить вложенный список

Возможный дубликат:
Создание списка из списка списков в 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(...)).