2010-07-18 16 views
12

¿Cómo puedo agregar el contenido de cada una de las siguientes tuplas (es decir, elementos dentro de la lista) a otra lista que ya tiene 'algo' en ella? Por lo tanto, quiero añadir lo siguiente a una lista (por ejemplo: dar lugar a []), que no está vacío:anexar tuplas a una lista

l = [('AAAA', 1.11), ('BBB', 2.22), ('CCCC', 3.33)] 

Obviamente, los siguientes no hacer la cosa:

for item in l: 
    result.append(item) 
    print result 

Quiero Protocolo de impresión:

[something, 'AAAA', 1.11] 
[something, 'BBB', 2.22] 
[something, 'CCCC', 3.33] 
+1

quiero que _todas_ las tuplas que se añadirán a la lista, uno ¿después de otro? ¿O solo uno a la vez? En otras palabras, ¿está buscando una lista que contenga '[algo, tuple1, tuple2, tuple3]', o varias listas, '[something, tuple1]', '[something, tuple2]', y '[something, tuple3] ¿? –

Respuesta

29
result.extend(item) 
+1

+1. Esta es la versión más limpia. – Skurmedel

+0

Nifty, no sabía 'extender' simplemente manejaría la tupla de la manera correcta. – John

+0

+1 En segundo lugar el "más limpio". – Kit

2

puede utilizar la función incorporada list() para convertir una tupla a una lis t. Así que es una versión más fácil:

l = [('AAAA', 1.11), ('BBB', 2.22), ('CCCC', 3.33)] 
result = [list(t) for t in l] 
print result 

Salida:

[['AAAA', 1.1100000000000001], 
['BBB', 2.2200000000000002], 
['CCCC', 3.3300000000000001]] 
+0

¿Por qué obtengo: TypeError: el objeto 'tuple' no se puede llamar? – DGT

+0

@DGT ni idea. ¿Qué versión de python estás usando? Lo anterior está bien en 2.6/2.7. – cletus

+0

@DGT: Probablemente esté omitiendo una coma después de una tupla. Algo como (a, b, c) (d, e, f) producirá ese error. La versión fija sería (a, b, c), (d, e, f) –

-1

Usted tendrá que descomprimir la tupla para anexar sus elementos individuales. De esta manera:

l = [('AAAA', 1.11), ('BBB', 2.22), ('CCCC', 3.33)] 

for each_tuple in l: 
    result = ['something'] 
    for each_item in each_tuple: 
    result.append(each_item) 
    print result 

Usted recibirá este:

['something', 'AAAA', 1.1100000000000001] 
['something', 'BBB', 2.2200000000000002] 
['something', 'CCCC', 3.3300000000000001] 

Tendrá que hacer algo de procesamiento de los valores numéricos de modo que se muestran correctamente, pero eso sería otra cuestión.

+1

No, esto no. –

+0

No, esto no. Pero este es el único tipo que al menos logró leer la pregunta hasta el final. – Slava

3

Puede convertir una tupla a una lista fácilmente:

>>> t = ('AAA', 1.11) 
>>> list(t) 
['AAAA', 1.11] 

Y entonces puede concatenar listas con extend:

>>> t = ('AAA', 1.11) 
>>> result = ['something'] 
>>> result.extend(list(t)) 
['something', 'AAA', 1.11]) 
+0

+1 No sabía acerca de 'extender()' :) – Kit

Cuestiones relacionadas