2012-12-04 108 views
0

我試圖搶在Python列表中的列表的第二個項目..搶在Python列表第二元組

例子:

people = [['John Doe', u'', u'25.78', u''], ['John Doe', u'', u'13.39', u''], ['John Doe', u'', u'11.93', u'0.00'], ['John Doe', u'', u'14.97', u'0.00'], ['John Doe', u'', u'14.34', u''], ['John Doe', u'', u'21.08', u''], ['John Doe', u'', u'13.24', u''], ['John Doe', u'', u'13.11', u'0.00'], ['John Doe', u'', u'', u''], ['John Doe', u'', u'19.45', u'0.00'], ['John Doe', u'', u'17.56', u''], ['John Doe', u'', u'20.57', u''], ['John Doe', u'', u'28.50', u''], ['John Doe', u'', u'24.38', u'0.00'], ['John Doe', u'', u'31.13', u''], ['John Doe', u'', u'17.20', u''], ['John Doe', u'', u'18.52', u'0.00'], ['John Doe', u'', u'6.42', u'0.00'], ['John Doe', u'', u'17.31', u'']]

我想要做的抓住列表中每個列表的第三個元素。

我希望我的回報是:

['25.78','13.39','11.93','14.97','14.34']等。

此外,獎勵積分。列表中每個項目前面的u是否會影響任何內容?

回答

1
result = [each[2] for each in people] 
print(result) 
2
In [57]: people = [['John Doe', u'', u'25.78', u''], ['John Doe', u'', u'13.39', u''], ['John Doe', u'', u'11.93', u'0.00'], ['John Doe', u'', u'14.97', u'0.00'], ['John Doe', u'', u'14.34', u''], ['John Doe', u'', u'21.08', u''], ['John Doe', u'', u'13.24', u''], ['John Doe', u'', u'13.11', u'0.00'], ['John Doe', u'', u'', u''], ['John Doe', u'', u'19.45', u'0.00'], ['John Doe', u'', u'17.56', u''], ['John Doe', u'', u'20.57', u''], ['John Doe', u'', u'28.50', u''], ['John Doe', u'', u'24.38', u'0.00'], ['John Doe', u'', u'31.13', u''], ['John Doe', u'', u'17.20', u''], ['John Doe', u'', u'18.52', u'0.00'], ['John Doe', u'', u'6.42', u'0.00'], ['John Doe', u'', u'17.31', u'']] 

In [58]: [p[2] for p in people] 
Out[58]: 
[u'25.78', 
u'13.39', 
u'11.93', 
u'14.97', 
u'14.34', 
u'21.08', 
u'13.24', 
u'13.11', 
u'', 
u'19.45', 
u'17.56', 
u'20.57', 
u'28.50', 
u'24.38', 
u'31.13', 
u'17.20', 
u'18.52', 
u'6.42', 
u'17.31'] 

你的字符串前面的u基本上是說它們是unicode字符串。如果你想扔常規ASCII字符串(假設他們有隻ASCII字符):

In [59]: [str(p[2]) for p in people] 
Out[59]: 
['25.78', 
'13.39', 
'11.93', 
'14.97', 
'14.34', 
'21.08', 
'13.24', 
'13.11', 
'', 
'19.45', 
'17.56', 
'20.57', 
'28.50', 
'24.38', 
'31.13', 
'17.20', 
'18.52', 
'6.42', 
'17.31'] 
1

您可以使用一個簡單的列表理解來獲得的第三個元素。

numbers = [i[2] for i in people] 

u表示它是一個unicode字符串。假設它包含ascii個字符(在這種情況下它可以),如果您不想使用unicode,則可以使用str

numbers = [str(i[2]) for i in people] 
0

,在這裏它是作爲numpy的

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

而且,只是爲了好玩:

result = [] 
for x in range(len(people)): 
    result.append(people[x][2]) 
+1

這是蟒蛇 – wim

+0

迭代一個愚蠢的方式-1 @wim它可能不是聰明或Pythonic的做法,但它的工作原理。 – maulik13