簡體   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