Как сгладить список кортежей в список pythonic

Учитывая следующий список кортежей:

INPUT = [(1,2),(1,),(1,2,3)] 

Как я сглажу его в список?

 OUTPUT ==> [1,2,1,1,2,3] 

Есть ли один лайнер, чтобы сделать выше?

Похожие предложениягелла: Свернуть список кортежей в Python

5 Solutions collect form web for “Как сгладить список кортежей в список pythonic”

Вы можете использовать понимание списка :

 >>> INPUT = [(1,2),(1,),(1,2,3)] >>> [y for x in INPUT for y in x] [1, 2, 1, 1, 2, 3] >>> 

itertools.chain.from_iterable также часто используется в таких случаях:

 >>> from itertools import chain >>> INPUT = [(1,2),(1,),(1,2,3)] >>> list(chain.from_iterable(INPUT)) [1, 2, 1, 1, 2, 3] >>> 

Однако это не совсем однострочный.

 >>> INPUT = [(1,2),(1,),(1,2,3)] >>> import itertools >>> list(itertools.chain.from_iterable(INPUT)) [1, 2, 1, 1, 2, 3] 
 >>> INPUT = [(1,2),(1,),(1,2,3)] >>> import operator as op >>> reduce(op.add, map(list, INPUT)) [1, 2, 1, 1, 2, 3] 

вы можете использовать sum которая суммирует все элементы, если это список списков (однопользовательский).

 sum([(1,2),(1,),(1,2,3)], ()) 

или конвертировать в список:

 list(sum([(1,2),(1,),(1,2,3)], ())) 

Добавление списков работает в python.

Примечание . Это неэффективно, а некоторые говорят, что они нечитаемы.

Не в одной строке, а в двух:

 >>> out = [] >>> map(out.extend, INPUT) ... [None, None, None] >>> print out ... [1, 2, 1, 1, 2, 3] 

Объявите объект списка и используйте расширение.

  • Получение первого значения None из списка
  • выбор элементов из списка в соответствии с их метками в другом списке
  • Как проверить, пуст ли пул в Python?
  • difflib.get_close_matches выкидывают имена в списке, если первый ответ неверен
  • Лучший способ распознавания сходства длин списка
  • Как проверить, существует ли n-й элемент в списке Python?
  • Странное поведение массива Python?
  • mylist = list () vs mylist = в Python
  • Python - лучший язык программирования в мире.