繁体   English   中英

我怎样才能迭代元组的第一个变量

[英]How can I iterate over only the first variable of a tuple

在python中,当你有一个元组列表时,你可以迭代它们。 例如,当你有3d点时:

for x,y,z in points:
    pass
    # do something with x y or z

如果您只想使用第一个变量,或者第一个和第三个变量,该怎么办? python中有跳过符号吗?

是什么阻止你不接触你不感兴趣的变量? 在Python中有一个常规的下划线用来表示你不感兴趣的变量。 例如:

for x, _,_ in points:
    print(x)

您需要了解这只是一种惯例,与性能无关。

是的,下划线:

>>> a=(1,2,3,4)
>>> b,_,_,c = a
>>> b,c
(1, 4)

这不是'跳过',只是一个惯例。 下划线变量仍然获得分配的值:

>>> _
3

执行此操作的常用方法是对未使用的变量使用下划线:

for x, _, z in points:
    # use x and z

这实际上与你所写的不同。 下划线是一个像其他任何一样的正常变量。 但这表明人们在阅读您的代码时并不打算使用该变量。

不建议在交互式提示中执行此操作,因为_在那里具有特殊含义:最后一个运行语句/表达式的值。

虽然这并不像你要求的那样光滑,但也许这对于你只想给你关心的元组索引提供有意义的名字的意图是最清晰的:

for each in points:
    x = each[0]
    # do something with x

在Python 3.1中,您可以在元组赋值左侧的标识符前面使用星号,它会吸收遗留的任何内容。 此构造将处理可变数量的元组项。 像这样:

>>> tpl = 1,2,3,4,5
>>> a, *b = tpl
>>> a
1
>>> b
>>> (2, 3, 4, 5)

或者以各种顺序和组合:

>>> a, *b, c = tpl
>>> a
1
>>> b
(2, 3, 4)
>>> c
5

因此,对于您询问的情况,您只对第一项感兴趣,请使用* _来吸收并丢弃您不关心的其余项目:

>>> a, *_ = tpl
>>> a
1

暂无
暂无

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

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