Shpaketoni (zgjeroni dhe caktoni variablave të shumta) tuple dhe lista në Python

biznes

Në Python, elementët e një tuple ose liste mund të zgjerohen dhe caktohen në variabla të shumta. Kjo quhet zbërthim i sekuencës ose caktim i papaketuar.

Detajet e mëposhtme përshkruhen këtu.

  • Shpaketimi i bazave të tuples dhe listave
  • Tuple të mbivendosur, listime të papaketuara
  • Shpaketimi me nënvizime:_
  • Shpaketimi me yll:*

Shih artikullin vijues për informacion mbi përdorimin e yjeve për të zgjeruar dhe për të kaluar tuplet, listat dhe fjalorët si argumente funksioni.

Shpaketimi i bazave të tuples dhe listave

Kur variablat shkruhen në anën e majtë, të ndara me presje, çdo ndryshoreje i caktohet një element i tuples ose listës në anën e djathtë. Është e njëjtë si për tuplet ashtu edhe për listat (shembullët e mëposhtëm janë shkruar në formë tuple).

t = (0, 1, 2)

a, b, c = t

print(a)
print(b)
print(c)
# 0
# 1
# 2

l = [0, 1, 2]

a, b, c = l

print(a)
print(b)
print(c)
# 0
# 1
# 2

Vini re se meqenëse tuplet mund të heqin kllapat e rrumbullakëta, kjo mund të përdoret për të caktuar vlera të shumta për variabla të shumta në një rresht të vetëm si më poshtë.

a, b = 0, 1

print(a)
print(b)
# 0
# 1

Nëse numri i variablave nuk përputhet me numrin e elementeve, ndodh një gabim.

# a, b = t
# ValueError: too many values to unpack (expected 2)

# a, b, c, d = t
# ValueError: not enough values to unpack (expected 4, got 3)

Nëse numri i variablave është më i vogël se numri i elementeve, elementët e mbetur mund të caktohen si një listë duke i bashkangjitur një yll emrit të ndryshores (shih më poshtë).

Tuple të mbivendosur, listime të papaketuara

Tuplet dhe listat e mbivendosur gjithashtu mund të shpaketohen. Nëse dëshironi të shpaketoni gjithashtu përmbajtjen, vendosni variablin në një nga sa vijon

  • ()
  • []
t = (0, 1, (2, 3, 4))

a, b, c = t

print(a)
print(b)
print(c)
# 0
# 1
# (2, 3, 4)

print(type(c))
# <class 'tuple'>

a, b, (c, d, e) = t

print(a)
print(b)
print(c)
print(d)
print(e)
# 0
# 1
# 2
# 3
# 4

Shpaketuar me _nënvizim_.

Në Python, jo vetëm të papaketuara, vlerat që nuk nevojiten i caktohen në mënyrë konvencionale nënvizimit (nënvizimit) _. Nuk ka asnjë kuptim të veçantë gramatikor; ato thjesht i caktohen një ndryshoreje të quajtur _.

t = (0, 1, 2)

a, b, _ = t

print(a)
print(b)
print(_)
# 0
# 1
# 2

Shpaketimi me yll

Nëse numri i variablave është më i vogël se numri i elementeve, një yll në emrin e ndryshores do të bëjë që elementët të caktohen së bashku si një listë.

Kjo sintaksë është zbatuar që nga Python 3 dhe nuk është i disponueshëm në Python 2.

Elementet u caktohen nga fillimi dhe fundi variablave pa yll, dhe elementët e mbetur u caktohen si listë variablave me yll.

t = (0, 1, 2, 3, 4)

a, b, *c = t

print(a)
print(b)
print(c)
# 0
# 1
# [2, 3, 4]

print(type(c))
# <class 'list'>

a, *b, c = t

print(a)
print(b)
print(c)
# 0
# [1, 2, 3]
# 4

*a, b, c = t

print(a)
print(b)
print(c)
# [0, 1, 2]
# 3
# 4

Për shembull, nëse doni të caktoni vetëm dy elementët e parë të një tupleje ose liste në një ndryshore, mund të përdorni nënvizimin e mësipërm për pjesët që nuk nevojiten.

a, b, *_ = t

print(a)
print(b)
print(_)
# 0
# 1
# [2, 3, 4]

E njëjta gjë mund të shkruhet edhe si më poshtë

a, b = t[0], t[1]

print(a)
print(b)
# 0
# 1

Mund të bashkëngjitet vetëm një yll. Nëse ka shumë variabla të shënuar me një yll, do të rezultojë një gabim SyntaxError sepse nuk është e mundur të përcaktohet se sa elementë janë caktuar për secilën variabël.

# *a, b, *c = t
# SyntaxError: two starred expressions in assignment

Vini re se edhe një element i vetëm i caktuar për një ndryshore të shënuar me një yll caktohet si një listë.

t = (0, 1, 2)

a, b, *c = t

print(a)
print(b)
print(c)
# 0
# 1
# [2]

print(type(c))
# <class 'list'>

Nëse nuk ka elementë shtesë, caktohet një listë boshe.

a, b, c, *d = t

print(a)
print(b)
print(c)
print(d)
# 0
# 1
# 2
# []
Copied title and URL