2012-03-02 3 views
26

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

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

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

(a,_,b,_) = myTuple 

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

+2

'a, _, b = myTuple' - довольно распространенная идиома. Честно говоря, я не вижу в этом ничего плохого. – NPE

+0

В чем проблема с '_ == 2'? Никто никогда не будет использовать '_' после кода. –

+1

Что делать, если я хочу игнорировать две части кортежа? Я обновлю вопрос –

ответ

10

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

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

лично я бы написать:

a, _, b = myTuple 

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

+4

Я хотел бы отметить, что в интерпретаторе python '_' присваивается результат последнего выражения (поэтому, если вы введете' 'hi'' и нажмите enter, то' _ is 'hi''), пока вы ничего не сделаете как это, в котором вы присваиваете ему значение, тогда он никогда не будет работать так, как раньше. – 2rs2ts

 Смежные вопросы

  • Нет связанных вопросов^_^