访问列表中元组的值

[(1,2), (2,3), (4,5), (3,4), (6,7), (6,7), (3,8)]
如何从此列表中的每个元组返回第二个值? 期望的输出:
[2, 3, 5, 4, 7, 7, 8]
    
已邀请:
具有列表理解力。
[x[1] for x in L]
    
伊格纳西奥的答案就是你想要的。但是,正如有人也在学习Python,让我试着为你解剖它......如上所述,它是一个列表理解(例如DiveIntoPython3中所涵盖的)。以下是几点:
[x[1] for x in L]
请注意代码行周围的
[]
。这些是定义列表的内容。这告诉你这段代码返回一个列表,所以它是
list
类型。因此,这种技术被称为“列表理解”。 L是您的原始列表。所以你应该在执行上面的代码之前定义
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)
返回
<class 'list'>
x[1]
指向每个元组中的第二个项目,而
x[0]
指向每个第一个项目。 所以这行代码字面上写着“返回列表L中所有元组的元组中的第二项”。 在提出这个问题之前,很难说你有多少尝试过这个问题,但也许你只是不熟悉理解?我会花一些时间阅读DiveIntoPython的第3章,或任何有关理解的资源。祝好运。     
列表理解绝对是这样做的方法。另一种应该更快的方法是
map
itemgetter
import operator

new_list = map(operator.itemgetter(1), old_list)
针对OP无法在谷歌上找到答案的评论,我会指出一种超级天真的方式来做到这一点。
new_list = []
for item in old_list:
    new_list.append(item[1])
这用于: 声明变量以引用空列表。 一个for循环。 在列表上调用
append
方法。 如果有人试图学习某种语言并且不能将这些基本部分组合在一起,那么他们需要将其视为练习,即使需要20个小时也要自己动手。 人们需要学习如何思考自己想要的东西并将其与可用工具进行比较。我的第二个答案中的每个元素都应该包含在基础教程中。没有阅读,你就无法学会编程。     
您也可以使用
zip
进行序列拆包:
L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]

_, res = zip(*L)

print(res)

# (2, 3, 5, 4, 7, 7, 8)
这也会从丢弃的第一个元素中创建一个元组
_
。只提取第二个是可能的,但更详细:
from itertools import islice

res = next(islice(zip(*L), 1, None))
    
或者你可以使用
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]
>>> 
    

要回复问题请先登录注册