繁体   English   中英

访问列表中元组中的值

[英]Accessing a value in a tuple that is in a list

[(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]

Ignacio 的答案正是您想要的。 然而,作为一个也在学习 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之外访问x ,或在执行上述行后键入type(x) ,它会告诉您NameError: name 'x' is not defined ,而type(L)返回<class 'list'>
  • x[1]指向每个元组中的第二个项目,而x[0]将指向每个第一个项目。
  • 所以这行代码字面意思是“为列表 L 中的所有元组返回元组中的第二项”。

在提出问题之前很难判断您尝试了多少问题,但也许您只是不熟悉理解? 我会花一些时间阅读DiveIntoPython 的第 3 章,或任何有关理解的资源。 祝你好运。

列表理解绝对是做到这一点的方法。 另一种应该更快的方法是mapitemgetter

import operator

new_list = map(operator.itemgetter(1), old_list)

针对 OP 无法在 google 上找到答案的评论,我将指出一种非常幼稚的方法。

new_list = []
for item in old_list:
    new_list.append(item[1])

这使用:

  1. 声明一个变量来引用一个空列表。
  2. 一个 for 循环。
  3. 在列表上调用append方法。

如果有人正在尝试学习一门语言并且不能为自己整理这些基本部分,那么他们需要将其视为练习并自己做,即使需要二十个小时。

人们需要学习如何思考自己想要什么,并将其与可用工具进行比较。 我的第二个答案中的每个元素都应该包含在基本教程中。 不阅读一本就无法学习编程

您还可以使用带有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]
>>> 
a = [(0,2), (4,3), (9,9), (10,-1)]
print(list(map(lambda item: item[1], a)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM