2010-07-18 31 views
12

Come posso aggiungere il contenuto di ciascuna delle seguenti tuple (cioè elementi all'interno dell'elenco) a un altro elenco che contiene già "qualcosa"? Quindi, voglio di pubblicare la seguente a un elenco (ad esempio: risultato []), che non è vuoto:aggiungere tuple a un elenco

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

Ovviamente, il seguente non fare la cosa:

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

voglio tabulato:

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

Vuoi _tutti_ le tuple per essere aggiunto alla lista, uno dopo un'altro? O solo uno alla volta? In altre parole, stai cercando una lista contenente '[qualcosa, tuple1, tuple2, tuple3]', o varie liste, '[qualcosa, tuple1]', '[qualcosa, tuple2]', e '[qualcosa, tuple3] '? –

risposta

29
result.extend(item) 
+1

+1. Questa è la versione più pulita. – Skurmedel

+0

Nifty, non sapevo che 'extend' avrebbe semplicemente gestito la tupla nel modo giusto. – John

+0

+1 I secondo il "più pulito". – Kit

2

È possibile utilizzare la funzione intrinseca list() per convertire una tupla a una lis t. Quindi, una versione più semplice è:

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

uscita:

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

perché ottengo: TypeError: l'oggetto 'tuple' non è richiamabile? – DGT

+0

@DGT nessuna idea. quale versione di Python stai usando? Quanto sopra va bene in 2.6/2.7. – cletus

+0

@DGT: probabilmente stai omettendo una virgola che segue una tupla. Qualcosa come (a, b, c) (d, e, f) produrrà quell'errore. La versione fissa sarebbe (a, b, c), (d, e, f) –

-1

Sarà necessario decomprimere la tupla per aggiungere i suoi singoli elementi. Come questo:

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 

Otterrete questo:

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

Sarà necessario fare un po 'di elaborazione sui valori numerici in modo che essi vengono visualizzati correttamente, ma che sarebbe un'altra domanda.

+1

No, non questo. –

+0

No, non questo. Ma questo è l'unico ragazzo che è riuscito a leggere la domanda fino alla fine. – Slava

3

È possibile convertire una tupla a un elenco facilmente:

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

E poi è possibile concatenare liste con extend:

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

+1 Non sapevo di 'extend()' :) – Kit

Problemi correlati