Folosirea * și zip pentru 'dezarhivare'
Știi deja cum să folosești zip() și cum să afișezi valorile dintr-un obiect zip. Excelent!
Hai să explorăm puțin mai mult zip(). Nu există o funcție unzip care să facă inversul operației zip(). Putem, însă, să inversăm ceea ce a fost arhivat cu zip() folosind tot zip(), dar cu ajutorul operatorului *! * despachetează un iterabil – cum ar fi o listă sau un tuplu – ca argumente poziționale într-un apel de funcție.
În acest exercițiu, vei folosi * într-un apel zip() pentru a despacheta tuplurile produse de zip().
Două tupluri de șiruri de caractere, mutants și powers, au fost preîncărcate.
Acest exercițiu face parte din cursul
Cutia cu instrumente Python
Instrucțiuni pentru exercițiu
- Creează un obiect
zipaplicândzip()pemutantsșipowers, în această ordine. Atribuie rezultatul variabileiz1. - Afișează tuplurile din
z1despachetându-le ca argumente poziționale folosind operatorul*într-un apelprint(). - Deoarece apelul anterior
print()ar fi epuizat elementele dinz1, recreează obiectulzipdefinit anterior și atribuie rezultatul din nou luiz1. - 'Dezarhivează' tuplurile din
z1despachetându-le ca argumente poziționale folosind operatorul*într-un apelzip(). Atribuie rezultatele variabilelorresult1și, respectiv,result2, în această ordine. - Ultima instrucțiune
print()afișează rezultatul comparării luiresult1cumutantsși al luiresult2cupowers. ApasăTrimite răspunsulpentru a vedea dacăresult1șiresult2despachetate sunt echivalente cumutantsși, respectiv,powers.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Create a zip object from mutants and powers: z1
z1 = ____
# Print the tuples in z1 by unpacking with *
print(____)
# Re-create a zip object from mutants and powers: z1
z1 = ____
# 'Unzip' the tuples in z1 by unpacking with * and zip(): result1, result2
result1, result2 = ____
# Check if unpacked tuples are equivalent to original tuples
print(result1 == mutants)
print(result2 == powers)