Используйте _ для экранирования более одного значения в цикле for

Скажем, у меня есть следующая структура данных:

input = [(1,2,3,4,5), (1,2,3,4), (1,2,3)]

В for В цикле я хочу перебирать только первые три элемента в каждом элементе кортежа, не беспокоясь о том, насколько велик кортеж.

Я знаю, что могу использовать _ чтобы достичь этого, но с этим я должен указать, сколько значений я намерен отбросить.

Есть ли способ достичь этого, не зная заранее, насколько велик рассматриваемый кортеж?

Я знаю, что могу сделать:

for i, j, k, _, _ in input:
    ....

Но есть ли способ сойти с рук только с одним _? Поскольку вышеупомянутое потерпит неудачу, если размер каждого подэлемента не 5 (я либо получу need more than 4 values to unpack если слишком маленький или too many values to unpack если слишком большой).

Я спрашиваю это из любопытства, я знаю, что могу отдельно распаковать элементы, выполнив:

for elem in input:     
    i, j, k = elem[:3]

Я использую Python 2.7.6.

1 ответ

Решение

Вы могли бы сделать for i, j, k, *_ in input: в Python 3.x.

Другие вопросы по тегам