2012-09-06 18 views
5

codice mio Python genera un elenco ogni volta che loop:come creare una lista di liste

list = np.genfromtxt('temp.txt', usecols=3, dtype=[('floatname','float')], skip_header=1) 

Ma io voglio salvare ogni uno - ho bisogno di una lista di liste di destra?

Così ho provato:

list[i] = np.genfromtxt('temp.txt', usecols=3, dtype=[('floatname','float')], skip_header=1) 

Ma Python ora mi dice che "lista" non è definito. Non sono sicuro di come lo definisco. Inoltre, c'è un elenco di liste uguale a un array ??

Grazie!

+0

Si prega di mostrare l'intero ciclo, non solo la linea che esegue l'incarico. –

+7

è un'idea BAD creare una variabile con lo stesso nome di un builtin. – tMC

+0

Un array non è un elenco di elenchi. "array" ha significati diversi in linguaggi diversi (in C un array non può essere ridimensionato, in Perl si può) ma nella maggior parte dei casi è approssimativamente analogo a una normale lista Python. –

risposta

4

Utilizzare il metodo append, ad esempio:

lst = [] 
line = np.genfromtxt('temp.txt', usecols=3, dtype=[('floatname','float')], skip_header=1) 
lst.append(line) 
+6

-1 per l'utilizzo del nome predefinito 'list'. Suggerisco 'lst'. –

+1

Grazie amico. Ho solo usato "lista" come esempio, ma vedo che avrei dovuto usare qualcos'altro. Quindi ho funzionato come hai suggerito. Ora quando stampo la lista [0] o la lista [7] ecc., Ottengo la risposta giusta. Ma quando provo a stampare il tutto con la lista di stampa, ottengo una lettura strana con la parola "array" e "dtype" al suo interno. – user1551817

15

Si desidera creare una lista vuota, quindi aggiungere il lista creata ad esso. Questo ti darà la lista delle liste. Esempio:

>>> l = [] 
>>> l.append([1,2,3]) 
>>> l.append([4,5,6]) 
>>> l 
[[1, 2, 3], [4, 5, 6]] 
2

Innanzitutto Non uso list come nome- variabile che è una funzione incorporata.

Io non sono super-chiaro di quello che stai chiedendo (un po 'più di contesto avrebbe aiutato), ma forse questo è disponibile-

my_list = [] 
my_list.append(np.genfromtxt('temp.txt', usecols=3, dtype=[('floatname','float')], skip_header=1)) 
my_list.append(np.genfromtxt('temp2.txt', usecols=3, dtype=[('floatname','float')], skip_header=1)) 

che creerà una lista (un tipo di array mutabile in python) chiamato my_list con l'output del metodo np.getfromtext() nei primi 2 indici.

La prima può essere fatto riferimento con my_list[0] e la seconda con my_list[1]

4

Crea la tua lista prima del ciclo, altrimenti verrà creato ogni ciclo.

>>> list1 = [] 
>>> for i in range(10) : 
... list1.append(range(i,10)) 
... 
>>> list1 
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [2, 3, 4, 5, 6, 7, 8, 9], [3, 4, 5, 6, 7, 8, 9], [4, 5, 6, 7, 8, 9], [5, 6, 7, 8, 9], [6, 7, 8, 9], [7, 8, 9], [8, 9], [9]]