Python - способ сглаживания вложенных списков?

Возможный дубликат:
объединить список списков в python
Сглаживание (нерегулярный) список списков в Python
Как сгладить списки без разделения строк?

У меня есть дерево списков-кортежей, и я хотел бы сгладить его для запроса, чтобы я мог распечатать все элементы первых списков каждого кортежа.

Я могу сделать это с помощью цикла for

bigNest = [([item1,item2],[]),([item3],[item4])]
mergedlist = []
for listItem in bigNest:
   mergedlist += listItem[0]
print mergedList

Мне интересно, есть ли более простой / быстрый способ, который также будет работать с более крупными кортежами.


person Db0    schedule 30.11.2012    source источник
comment
Вы искали Flatten? На это ответили 100 раз.   -  person Mark Ransom    schedule 30.11.2012
comment
Есть много разных способов сделать это, как обсуждалось в предыдущих ответах (поэтому я голосую за закрытие). Есть краткие, но медленные (sum(nested_list, [])) или различные решения на основе itertools (например, itertools.chain), которые будут значительно лучше масштабироваться.   -  person Joe Kington    schedule 30.11.2012
comment
Я действительно искал, но, очевидно, не нашел нужных ключевых слов, потому что ни одна из вышеперечисленных тем не подошла   -  person Db0    schedule 30.11.2012
comment
Кроме того, извините, но ни один из возможных дубликатов выше не отвечает на мой вопрос. Я знаю, как сгладить, если захочу. Мне нужен питонический способ сделать это. Все перечисленные больше моих!   -  person Db0    schedule 30.11.2012
comment
Ни один из них явно не отвечает на один и тот же вопрос (вы хотите сгладить только первый элемент, а не рекурсивно). Однако вы можете использовать те же самые уловки. Например. merged = sum([item[0] for item in nested], [])   -  person Joe Kington    schedule 30.11.2012
comment
Я удивлен, что вы не выбрали правильное ключевое слово, поскольку вы использовали flatten как в заголовке, так и в вопросе, и это очень актуально и конкретно. Причина, по которой ваш ответ короче, заключается в том, что это конкретное подмножество общей проблемы, когда вы объединяете только определенный уровень вложенности.   -  person Mark Ransom    schedule 30.11.2012
comment
Вы, наверное, правы, но я поэтому и спросил! К сожалению, я не настолько хорош в Python, чтобы понять, будет ли код, созданный для чего-то другого, работать с тем, что мне нужно делать.   -  person Db0    schedule 30.11.2012
comment
@JoeKington, к сожалению, не сработало. Это закончилось тем, что дублировал контент.   -  person Db0    schedule 30.11.2012
comment
Возможно, вам удалось задать вопрос, если бы вы указали на некоторые другие вопросы / ответы и почему их недостаточно.   -  person Mark Ransom    schedule 30.11.2012
comment
Честно говоря, я просто хотел задать быстрый вопрос. Я не хотел писать целое эссе. Я видел, как кто-то спрашивал, как просто объединить списки, и получил ответ, поэтому подумал, что мне достаточно поставить существующее решение и попросить более совершенное. Забудь это...   -  person Db0    schedule 30.11.2012


Ответы (1)


изменить: извините, последнее сообщение было неправильным, вы можете понять список:

mergedlist = []
foovar = [mergedlist.extend(i[0]) for i in bigNest]
person Cameron Sparr    schedule 30.11.2012
comment
Могу я просто бросить это в печать? Т.е. можно print [mergedlist.extend(i) for i in bigNest]? - person Db0; 30.11.2012
comment
Кроме того, разве это не расширит мой список, просто добавив кортежи? Мне нужно глубже. - person Db0; 30.11.2012
comment
о да, извините, я имел в виду .extend(i[0]) - person Cameron Sparr; 30.11.2012