lista a tupla

Arnau Sanchez arnau en ehas.org
Vie Ago 17 09:38:07 CEST 2007


> El día 7/02/07, Pau Cervera Badia <cervera en ffn.ub.es> escribió:

>> saben de alguna forma pythonica de convertir una lista,
>>
>> lista = [(1,2),(3,4)]
>>
>> a una tupla
>>
>> tupla = (1, 2, 3, 4) ?
>> Gràcias.

Josu Oyanguren escribió:

 > import operator
 > reduce(operator.add, lista)
 >
 > o en una sola línea
 >
 > reduce(lambda x, y: x+y, lista)

Sólo añadir que lo que pides se conoce como "aplanar", en inglés 
"flatten". Si buscas por ese término en google encontrarás varias formas 
de hacerlo, entre ellas la de Josu.

A mi particularmente me gusta trabajar con iteradores (para listas 
pequeñas da igual, para grandes puede suponer un buen ahorro de memoria):

http://docs.python.org/lib/itertools-recipes.html

from itertools import chain
def flatten(listOfLists):
     return chain(*listOfLists)

lista = [(1,2), (3,4)]
lista2 = flatten(lista)
print lista2
<itertools.chain object at 0xb7d0ba6c>
print tuple(lista2)
(1, 2, 3, 4)




Más información sobre la lista de distribución Python-es