在Python中,當你有一個元組列表時,你可以迭代它們。例如,當您有3d點時:我該如何迭代一個元組的第一個變量
for x,y,z in points:
pass
# do something with x y or z
如果您只想使用第一個變量或第一個和第三個變量,該怎麼辦? Python中是否有跳過符號?
在Python中,當你有一個元組列表時,你可以迭代它們。例如,當您有3d點時:我該如何迭代一個元組的第一個變量
for x,y,z in points:
pass
# do something with x y or z
如果您只想使用第一個變量或第一個和第三個變量,該怎麼辦? Python中是否有跳過符號?
阻止你不接觸你不感興趣的變量嗎?在Python中有一個常用的下劃線來表示你不感興趣的變量。例如:
for x, _,_ in points:
print(x)
您需要明白,這只是一個慣例,並且對性能沒有影響。
一種常見的方式做,這是使用下劃線爲未使用的變量:
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
這是一個例子。通常我可以在一個元組中有4個變量,並且我懶得爲它們創建好的新變量名稱。 – 2010-06-17 11:55:20
@Peter:你不必使用*好的*名稱作爲你不想使用的變量。 – SilentGhost 2010-06-17 11:57:49
事實上'_'可能是你可能想出的最不具描述性的變量名稱;-)或者它會是,如果不是這個約定的話。 – 2010-06-17 12:23:16