Tuplite ja loendite lahtipakkimine (laiendamine ja määramine mitmele muutujale) Pythonis

Äri

Pythonis saab tupli või loendi elemente laiendada ja määrata mitmele muutujale. Seda nimetatakse järjestuse lahtipakkimiseks või lahtipakitud määramiseks.

Siin on kirjeldatud järgmisi üksikasju.

  • Tuplite ja loetelude lahtipakkimise põhitõed
  • Sisestatud tuplid, pakkimata loetelud
  • Alamrubriikidega lahtipakkimine:_
  • Tähtedega lahtipakkimine:*

Järgnevas artiklis leiate teavet tärnide kasutamise kohta tuplite, loendite ja sõnastike laiendamiseks ja edastamiseks funktsioonide argumentidena.

Tuplite ja loetelude lahtipakkimise põhitõed

Kui muutujad kirjutatakse vasakule poole, eraldatuna komadega, määratakse igale muutujale üks element tuplist või loetelust paremal pool. See on sama nii tuplite kui ka loetelude puhul (järgmised näited on kirjutatud tupli kujul).

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

Pange tähele, et kuna tuplid võivad jätta ümarsulgud välja, saab seda kasutada mitme väärtuse määramiseks mitmele muutujale ühel real järgmiselt.

a, b = 0, 1

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

Kui muutujate arv ei vasta elementide arvule, tekib viga.

# 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)

Kui muutujate arv on väiksem kui elementide arv, saab ülejäänud elemendid määrata loeteluna, lisades muutuja nimele tärni (vt allpool).

Sisestatud tuplid, pakkimata loetelud

Sisestatud tupleid ja loendeid saab samuti lahti pakkida. Kui soovite ka sisu lahti pakkida, siis ümbritsege muutuja ühte järgmistest muutujatest

  • ()
  • []
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

Välja pakitud koos _underscore_.

Pythonis, mitte ainult lahtipakitud, omistatakse väärtused, mida ei ole vaja, tavapäraselt allajoonega (underscore) _. Erilist grammatilist tähendust ei ole, need lihtsalt omistatakse muutujale nimega _.

t = (0, 1, 2)

a, b, _ = t

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

Tähtedega lahtipakkimine

Kui muutujate arv on väiksem kui elementide arv, siis tärniga muutuja nimes määratakse elemendid koos loeteluna.

See süntaks on rakendatud alates Python 3-st ja see ei ole Python 2-s saadaval.

Elemendid määratakse algusest ja lõpust alates muutujatele ilma tärnita ja ülejäänud elemendid määratakse loeteluna muutujatele tärniga.

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

Näiteks kui soovite määrata muutujale ainult kaks esimest elementi tuplist või loendist, võite kasutada ülaltoodud alajaotust nende osade jaoks, mida ei ole vaja.

a, b, *_ = t

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

Sama võib kirjutada ka järgmiselt

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

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

Võib lisada ainult ühe tärni. Kui tärniga on märgitud mitu muutujat, tekib SyntaxError-viga, sest ei ole võimalik kindlaks teha, mitu elementi on igale muutujale määratud.

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

Pange tähele, et isegi üks element, mis on määratud muutujale, mis on tähisega tähistatud, on määratud loeteluna.

t = (0, 1, 2)

a, b, *c = t

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

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

Kui lisaelemente ei ole, määratakse tühi nimekiri.

a, b, c, *d = t

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