В Python, когда у Вас есть список кортежей, можно выполнить итерации по ним. Например, когда у Вас есть 3-и точки затем:
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
На самом деле это не делает ничего отличного от того, что вы написали. Подчеркивание - это обычная переменная, как и любая другая. Но это показывает людям, читающим ваш код, что вы не собираетесь использовать переменную.
Не рекомендуется делать это в интерактивной подсказке, поскольку _
имеет там особое значение: значение последнего запущенного оператора/выражения.
В 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
Хотя это не так гладко, как вы просите, возможно, это наиболее разборчиво для ваших намерений давать значимые имена только индексам кортежей, которые вас интересуют:
for each in points:
x = each[0]
# do something with x