Mbukak paket (ngembangake lan nemtokake macem-macem variabel) tuple lan dhaptar ing Python

Bisnis

Ing Python, unsur tuple utawa dhaptar bisa ditambahi lan ditugasake menyang macem-macem variabel. Iki diarani urutan unpacking utawa unpacked assignment.

Rincian ing ngisor iki diterangake ing kene.

  • Unpacking dhasar tuples lan dhaptar
  • Tuples nested, listing unpacked
  • Unpacking karo Underscores:_
  • Mbukak bungkus nganggo tanda bintang:*

Deleng artikel ing ngisor iki kanggo informasi babagan nggunakake tanda bintang kanggo nggedhekake lan ngliwati tuple, dhaptar, lan kamus minangka argumen fungsi.

Unpacking dhasar tuples lan dhaptar

Nalika variabel ditulis ing sisih kiwa, dipisahake karo koma, saben variabel diwenehi unsur tuple utawa dhaptar ing sisih tengen. Iku padha kanggo tuples lan dhaptar (conto ing ngisor iki ditulis ing wangun 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

Elinga yen wiwit tuples bisa ngilangi kurung babak, iki bisa digunakake kanggo nemtokake sawetara nilai kanggo sawetara variabel ing baris siji minangka nderek.

a, b = 0, 1

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

Yen jumlah variabel ora cocog karo jumlah unsur, ana kesalahan.

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

Yen jumlah variabel kurang saka jumlah unsur, unsur isih bisa ditugasake minangka dhaptar kanthi nambahake tanda bintang ing jeneng variabel (ndeleng ngisor).

Tuples nested, listing unpacked

Tuples lan dhaptar sing bersarang uga bisa dibongkar. Yen sampeyan pengin mbongkar isi uga, lampirake variabel ing salah siji saka ing ngisor iki

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

Unpacked karo _underscore_.

Ing Python, ora mung unpacked, Nilai sing ora dibutuhake conventionally diutus kanggo underscore (underscore) _. Ora ana makna gramatikal khusus; padha mung ditugasake menyang variabel sing jenenge _.

t = (0, 1, 2)

a, b, _ = t

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

Mbukak bungkus nganggo tanda bintang

Yen jumlah variabel kurang saka jumlah unsur, tanda bintang ing jeneng variabel bakal nyebabake unsur ditugasake bebarengan minangka dhaptar.

Sintaks iki wis dileksanakake wiwit Python 3 lan ora kasedhiya ing Python 2.

Unsur ditugasake saka wiwitan lan pungkasan menyang variabel tanpa tanda bintang, lan unsur sing isih ana ditugasake minangka dhaptar kanggo variabel kanthi tanda bintang.

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

Contone, yen sampeyan pengin nemtokake mung rong unsur pisanan saka tuple utawa dhaptar menyang variabel, sampeyan bisa nggunakake underscore ndhuwur kanggo bagean sing ora perlu.

a, b, *_ = t

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

Semono uga bisa ditulis kaya ing ngisor iki

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

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

Mung siji tanda bintang bisa ditempelake. Yen ana sawetara variabel sing ditandhani karo tanda bintang, kesalahan SyntaxError bakal nyebabake amarga ora bisa nemtokake jumlah unsur sing ditugasake kanggo saben variabel.

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

Elinga yen malah unsur siji diutus kanggo variabel ditandhani karo tanda bintang diutus minangka dhaftar.

t = (0, 1, 2)

a, b, *c = t

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

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

Yen ora ana unsur tambahan, dhaptar kosong diwenehake.

a, b, c, *d = t

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