Malo igranje sa tupleima

17.1 Malo igranje sa tupleima 

Videli smo da su tuple nepromenljiv tip podataka, a pri tome su i sekvence. Zbog svojih osobina ona mogu postati veoma zgodne za dobijanje nekih rezultata, za koje bi smo, u suprotnom, morali da pišemo složene algoritme. Na primer, možda bi smo mi želeli da nam funkcija vraća dve ili više vrednosti, koje su potpuno različite? Mi to možemo postići vrlo lako, koristeći tuple!
>>> def dve(): 
...     return 'prva', 'druga' 
... 
>>> def tri(): 
...     return 1, 2, 3 
... 
>>> a, b = dve() 
>>> print(a, '\n', b) 
prva 
 druga 
>>> a, b, c = tri() 
>>> print('{}\n{}\n{}'.format(a, b, c)) 
1 
2 
3 
>>> 
Pozivanje funkcije sa pomoću više promenljivih, na primer a, b = <neka funkcija>, se naziva „otpakivanje“ tuple. Ovo se može izvesti samo ukoliko tačno znamo koliko će nam vrednosti funkcija vratiti, u suprotnom:
>>> a, b = tri() 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
ValueError: too many values to unpack (expected 2) 
>>> 
Python je očekivao dve vrednosti, a dobio je tri – greška.
Ali, da li mora da bude? Postoji način i da se ovakva greška izbegne. Mi možemo da dobijemo rezultati koji će izgledati kao (a, <sve ostalo>), i to postižemo tako što koristimo oznaku zvezdice, slično onome što smo radili prilikom definisanja promenljivog broja parametara funkcije: 
>>> a, *b = tri() 
>>> print('{}\n{}'.format(a, b)) 
1 
[2, 3] 
>>> a, *b = [1, 2, 3, 4, 5, 6, 7] 
>>> print('{}\n{}'.format(a, b)) 
1 
[2, 3, 4, 5, 6, 7] 
>>> 
Tuple nam takođe mogu poslužiti za najbrži način zamene vrednosti neke dve (ili više) promenljive:
>>> a, b = b, a 
>>> print('{}\n{}'.format(a, b)) 
[2, 3, 4, 5, 6, 7] 
1 
>>> 
Laganica, zar ne?

17 Malo više i
malo naprednije
Indeks 17.2 Metode koje imaju
specijalna značenja

Primjedbe

Popularno

Kako televizija štetno utiče na Vaše zdravlje finansije?

Da li je TV kviz Slagalica "prevara"?

Tu je novi Qt creator 4.4.0!

Kada prijatelji odlaze

Microsoft objavio - nova verzija Windowsa stiže...

Opet su se pojavili lažni kuponi brenda "IDEA" na društvenim mrežama

Najgore obrade velikih rock hitova

Sitnije promene na blogu...

Poslednji pozdrav izgubljenom vremenu

Ne, Marlboro ne deli besplatne cigarete!