2015-05-05 6 views
11

Ich habe eine Liste wie folgt erhalten:Python Wie jedes erste Element in 2 Dimensional Liste

a = ((4.0, 4, 4.0), (3.0, 3, 3.6), (3.5, 6, 4.8)) 

Ich möchte ein Ergebnis wie folgt aus (EVERY erste Element in der Liste):

4.0, 3.0, 3.5 

Ich habe versucht, ein [:: 1] [0], aber es funktioniert nicht

Ich bin gerade erst vor Wochen Python lernen. Python version = 2.7.9

+0

Das ist keine Liste ... Wenn Sie mit Arrays arbeiten wollen, schauen Sie in 'numpy'. – jonrsharpe

Antwort

23

zurückkehren Sie den Index [0] von jedem Element erhalten kann eine Liste Verständnis

>>> [i[0] for i in a] 
[4.0, 3.0, 3.5] 

gerade auch pedantisch sein, Sie haben kein list von list, Sie haben a tuple von tuple.

+0

Nun, in diesem Fall sollten Sie wahrscheinlich auch ein Tupel zurückgeben. Versuchen Sie, einen Generatorausdruck in das Schlüsselwort 'tuple' zu ​​übergeben. –

2

Sie können es wie

[ x[0] for x in a] 

, die eine Liste des ersten Elements jeder Liste in a

13

Verwendung zip

columns = zip(*rows) #transpose rows to columns 
print columns[0] #print the first column 
#you can also do more with the columns 
print columns[1] # or print the second column 
columns.append([7,7,7]) #add a new column to the end 
backToRows = zip(*columns) # now we are back to rows with a new column 
print backToRows 

können Sie auch numpy verwenden

a = numpy.array(a) 
print a[:,0] 
+2

in Python 3, müssen Sie Liste (zip (* Zeilen)) tun, sonst ist es nicht einklagbar. – mehmet

0

Versuchen Sie es mit

for i in a : 
    print(i[0]) 

i stellt einzelne Zeile in a.So, i [0] das erste represnts Element jeder Zeile.

Verwandte Themen