访问列表中元组中的值

sup*_*er9 80 python tuples list

[(1,2), (2,3), (4,5), (3,4), (6,7), (6,7), (3,8)]
Run Code Online (Sandbox Code Playgroud)

如何从此列表中的每个元组返回第二个值?

期望的输出:

[2, 3, 5, 4, 7, 7, 8]
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 92

具有列表理解力.

[x[1] for x in L]
Run Code Online (Sandbox Code Playgroud)

  • 我知道这是一个简单的问题.这样一个精英主义的地方吗?尝试谷歌搜索问题,结果不是我需要的.我用艰难的方式学习python,我没有在那里找到它.我之前已经问过关于学习Python的最佳方法的问题,而且一致的答案是获得一本基本书并且只是潜入.它让我感到沮丧,因为我无法在任何书籍或在线资料中找到解决方案.到目前为止?此外,您的评论确实无用,并且不鼓励新手新成员在SO上发帖. (46认同)
  • 我用Google搜索"访问元组中的项目",目的是访问元组列表中的项目.它把我带到你的问题所以谢谢你.我是Python的新手,并没有找到特别直观的答案,但那只是我! (18认同)
  • 我认为SO的整个概念是为了更容易找到问题的答案.为什么一个问题必须有一定难度才能有效?好问题,好答案. (3认同)
  • 杰出的!一个简短、尖锐、中肯的回答一个简短、尖锐、中肯的问题。你们都让我开心了一天! (3认同)

gar*_*ary 72

伊格纳西奥的答案就是你想要的.但是,正如有人也在学习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章,或任何有关理解的资源.祝好运.

  • 在2.x中,`x`将存在于LC之外,最后一个值绑定到它.这是在3.x中修复的. (4认同)
  • 令人敬畏的解释@gary.我特别感谢你指出L指的是什么. (3认同)

aar*_*ing 6

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

import operator

new_list = map(operator.itemgetter(1), old_list)
Run Code Online (Sandbox Code Playgroud)

针对OP无法在谷歌上找到答案的评论,我会指出一种超级天真的方式来做到这一点.

new_list = []
for item in old_list:
    new_list.append(item[1])
Run Code Online (Sandbox Code Playgroud)

这用于:

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

如果有人试图学习某种语言并且不能将这些基本部分组合在一起,那么他们需要将其视为练习,即使需要20个小时也要自己动手.

人们需要学习如何思考自己想要的东西并将其与可用工具进行比较.第二个答案中的每个元素都应该包含在基础教程中.没有阅读,你就无法学会编程.