presento questo codice basato su Peter Hoffmann's answer come risposta alla dfa's comment.
È garantito il funzionamento indipendentemente dal fatto che la tupla abbia o meno un numero pari di elementi.
[(tup[i], tup[i+1]) for i in range(0, (len(tup)/2)*2, 2)]
Il parametro (len(tup)/2)*2
gamma calcola il maggior numero pari inferiore o uguale alla lunghezza della tupla quindi è garantito il funzionamento se la tupla ha un numero di elementi.
Il risultato del metodo sarà una lista. Questo può essere convertito in tuple usando la funzione tuple()
.
Esempio:
def inPairs(tup):
return [(tup[i], tup[i+1]) for i in range(0, (len(tup)/2)*2, 2)]
# odd number of elements
print("Odd Set")
odd = range(5)
print(odd)
po = inPairs(odd)
print(po)
# even number of elements
print("Even Set")
even = range(4)
print(even)
pe = inPairs(even)
print(pe)
uscita
Odd Set
[0, 1, 2, 3, 4]
[(0, 1), (2, 3)]
Even Set
[0, 1, 2, 3]
[(0, 1), (2, 3)]
fonte
2013-07-27 16:05:25
Non si può decidere di un nome tupla variabile, in quanto sovrascrive la funzione built-in tuple(). – recursive