[(1,2), (2,3), (4,5), (3,4), (6,7), (6,7), (3,8)]
如何从列表中的每个元组返回第二个值?
所需的输出:
[2, 3, 5, 4, 7, 7, 8]
Answers:
具有列表理解能力。
[x[1] for x in L]
伊格纳西奥的答案就是你想要的。但是,当有人也在学习Python时,让我尝试为您剖析它……如上所述,这是一个列表理解(例如,在DiveIntoPython3中发现)。这里有几点:
[x[1] for x in L]
[]
代码行中的。这些是定义列表的内容。这告诉您此代码返回一个列表,因此属于该list
类型。因此,该技术称为“列表理解”。L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
在执行上述代码之前进行定义。x
是仅存在于理解中的变量-尝试在理解x
之外访问,或type(x)
在执行上述行后键入,它将告诉您NameError: name 'x' is not defined
,而type(L)
return <class 'list'>
。x[1]
指向每个元组中的第二个项目,而x[0]
指向每个元组中的每个项目。在问问题之前很难说出您曾尝试过多少次问题,但也许您只是不了解理解?我将花一些时间阅读DiveIntoPython的第3章,或有关理解的任何资源。祝好运。
x
它将存在于LC外部,并绑定了最后一个值。此问题已在3.x中修复。
[x[1] for x in [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]]
但是在眼睛上并不容易。
列表理解绝对是做到这一点的方法。应该更快的另一种方法是map
和itemgetter
。
import operator
new_list = map(operator.itemgetter(1), old_list)
针对OP无法在google上找到答案的评论,我将指出一种超级幼稚的方法。
new_list = []
for item in old_list:
new_list.append(item[1])
它使用:
append
在列表上调用方法。如果有人试图学习一种语言,但又不能自己整理这些基本知识,那么他们需要将其视为一种练习,即使需要花费20个小时,也可以自己完成。
人们需要学习如何思考自己想要什么并将其与可用工具进行比较。我的第二个答案中的每个元素都应包含在基础教程中。不读一本就不能学习编程。
或者您可以使用pandas
:
>>> import pandas as pd
>>> L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
>>> df=pd.DataFrame(L)
>>> df[1]
0 2
1 3
2 5
3 4
4 7
5 7
6 8
Name: 1, dtype: int64
>>> df[1].tolist()
[2, 3, 5, 4, 7, 7, 8]
>>>
或numpy
:
>>> import numpy as np
>>> L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
>>> arr=np.array(L)
>>> arr.T[1]
array([2, 3, 5, 4, 7, 7, 8])
>>> arr.T[1].tolist()
[2, 3, 5, 4, 7, 7, 8]
>>>
a = [(0,2), (4,3), (9,9), (10,-1)]
print(list(map(lambda item: item[1], a)))