Игнорировать часть кортежа Python - PullRequest
35 голосов
/ 02 марта 2012

Если у меня есть кортеж, такой как (1,2,3,4), и я хочу присвоить 1 и 3 переменным a и b, я, очевидно, могу сказать

myTuple = (1,2,3)
a = my_tuple[0]
b = myTuple[2]

Или что-то вроде

(a,_,b,_) = myTuple

Можно ли как-то распаковать значения, но игнорировать одно или несколько из них?

Ответы [ 2 ]

50 голосов
/ 02 марта 2012

Я бы лично написал:

a, _, b = myTuple

Это довольно распространенная идиома, поэтому она широко понята.Я нахожу синтаксис кристально чистым.

14 голосов
/ 02 марта 2012

На мой взгляд, ваше решение в порядке.Если у вас действительно есть проблема с назначением _, тогда вы можете определить список индексов и сделать:

a = (1, 2, 3, 4, 5)
idxs = [0, 3, 4]
a1, b1, c1 = (a[i] for i in idxs)
...