Domanda

Voglio recuperare indici specifici da un Iterable.Questo sarebbe equivalente a:

In [7]: def f():  
   ...:     return [1,2,3,4,5]  
In [8]: (_, x, _, y, _) =  f()  
In [9]: x, y  
Out[9]: (2, 4)
.

Ma non voglio calcolare i più volte più volte o è molto lungo e non voglio scrivere troppi _s

La mia domanda è puramente per curiosità e sto effettivamente utilizzando le variabili locali come mostrato sopra.

Modifica :

Una soluzione è semplicemente usare affettare con la notazione iterable[start:end:step]:

In [24]: (x, y) =  f()[1:4:2]  
In [25]: x, y  
Out[25]: (2, 4)`
.

EddIt Bis : Utilizzando i lavori di taglio se è necessario recuperare ogni elementi nth in un iterabile ma se si desidera che gli elementi in indice 2,3 e 5,6 utilizzando operator.itemgetter(2,3,5,6)(lst) sembra essere una soluzione migliore:

In [8]: operator.itemgetter(2,3,5,6)(range(10))
Out[8]: (2, 3, 5, 6)
.

È stato utile?

Soluzione

Un modo leggermente rotonda è quello di utilizzare la funzione itemgetter dal modulo operator.

 import operator
 m = operator.itemgetter(2,3)
 x, y = m([1,2,3,4,5])
.

La chiamata a itemgetter crea un chiamino che prende un L iterabile e restituisce L[2] e L[3].

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top