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

时间:2010-06-17 11:47:52

标签: python tuples loops

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

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

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

5 个答案:

答案 0 :(得分:8)

是否阻止您不接触您不感兴趣的变量?在Python中有一个常规的下划线用来表示你不感兴趣的变量。 E.g:

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

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

答案 1 :(得分:7)

是的,下划线:

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

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

>>> _
3

答案 2 :(得分:5)

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

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

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

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:0)

在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