J'ai une liste comme celle-ci:
a = ((4.0, 4, 4.0), (3.0, 3, 3.6), (3.5, 6, 4.8))
Je veux un résultat comme celui-ci ( TOUS LES premier élément de la liste):
4.0, 3.0, 3.5
J'ai essayé un [:: 1] [0], mais ça ne marche pas
Je commence tout juste à apprendre Python il y a quelques semaines. Python version = 2.7.9
Vous pouvez obtenir l'index [0]
de chaque élément d'une compréhension de liste
>>> [i[0] for i in a]
[4.0, 3.0, 3.5]
Aussi, juste pour être pédant, vous n'avez pas un list
de list
, vous avez un Tuple
de Tuple
.
utiliser 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
vous pouvez aussi utiliser numpy
a = numpy.array(a)
print a[:,0]
Vous pouvez l'obtenir comme
[ x[0] for x in a]
qui retournera une liste du premier élément de chaque liste dans a
Comparé les 3 méthodes
D2_list=[list(range(100))]*100
t1=time.time()
for i in range(10**5):
for j in range(10):
b=[k[j] for k in D2_list]
D2_list_time=time.time()-t1
array=np.array(D2_list)
t1=time.time()
for i in range(10**5):
for j in range(10):
b=array[:,j]
Numpy_time=time.time()-t1
D2_trans = list(Zip(*D2_list))
t1=time.time()
for i in range(10**5):
for j in range(10):
b=D2_trans[j]
Zip_time=time.time()-t1
print ('2D List:',D2_list_time)
print ('Numpy:',Numpy_time)
print ('Zip:',Zip_time)
La méthode Zip fonctionne mieux. C’était très utile lorsque je devais effectuer quelques processus relatifs aux colonnes pour les tâches de calcul dans les serveurs de cluster sur lesquels numpy n’était pas installé.