Kupeana dhamana nyingi au sawa kwa anuwai nyingi kwenye Python

Biashara

Katika Python, = operator hutumika kugawa maadili kwa vigezo.

a = 100
b = 200

print(a)
# 100

print(b)
# 200

Kama ilivyo kwenye mfano hapo juu, unaweza kugawa maadili kwa anuwai nyingi kwa wakati mmoja badala ya moja kwa wakati, ambayo ni rahisi kwa sababu inahitaji safu moja rahisi ya nambari kuandika.

Kesi mbili zifuatazo zimeelezewa.

  • Agiza thamani nyingi kwa anuwai nyingi
  • Agiza thamani sawa kwa anuwai nyingi

Agiza thamani nyingi kwa anuwai nyingi

Thamani nyingi zinaweza kupewa vigeu vingi kwa wakati mmoja kwa kutenganisha viambajengo na thamani kwa koma.

a, b = 100, 200

print(a)
# 100

print(b)
# 200

Vigezo vitatu au zaidi, kila moja ya aina tofauti, vinakubalika.

a, b, c = 0.1, 100, 'string'

print(a)
# 0.1

print(b)
# 100

print(c)
# string

Ikiwa kuna kigezo kimoja upande wa kushoto, kimetolewa kama nakala.

a = 100, 200

print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>

Ikiwa idadi ya vigeu kwenye upande wa kushoto hailingani na idadi ya thamani zilizo upande wa kulia, hitilafu ya ValueError itatokea, lakini nyinginezo zinaweza kugawiwa kama orodha kwa kuongeza kinyota kwenye kigezo.

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

# a, b, c = 100, 200
# ValueError: not enough values to unpack (expected 3, got 2)

a, *b = 100, 200, 300

print(a)
print(type(a))
# 100
# <class 'int'>

print(b)
print(type(b))
# [200, 300]
# <class 'list'>

*a, b = 100, 200, 300

print(a)
print(type(a))
# [100, 200]
# <class 'list'>

print(b)
print(type(b))
# 300
# <class 'int'>

Kwa habari zaidi kuhusu nyota na jinsi ya kugawa vipengele vya tuple au orodha kwa vigezo vingi, angalia makala ifuatayo.

Agiza thamani sawa kwa anuwai nyingi

Thamani sawa inaweza kutolewa kwa anuwai nyingi kwa kutumia = mfululizo. Hii ni muhimu kwa kuanzisha anuwai nyingi kwa thamani sawa.

a = b = 100

print(a)
# 100

print(b)
# 100

Zaidi ya vipande 3 vinakubalika.

a = b = c = 'string'

print(a)
# string

print(b)
# string

print(c)
# string

Baada ya kugawa thamani sawa, thamani nyingine inaweza kupewa mmoja wao.

a = 200

print(a)
# 200

print(b)
# 100

Kuwa mwangalifu unapoweka vitu vinavyoweza kugeuzwa kama vile orodha na aina za kamusi, badala ya vitu visivyoweza kubadilika (visivyobadilika) kama vile nambari kamili, nambari za nukta zinazoelea na mifuatano.

Kutumia = mfululizo kunamaanisha kuwa vijiti vyote vinaelekeza kwa kitu kimoja, kwa hivyo ukibadilisha thamani ya kitu kimoja au kuongeza kipengee kipya, kingine kitabadilika pia.

a = b = [0, 1, 2]

print(a is b)
# True

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [100, 1, 2]

Sawa na hapa chini.

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

print(a is b)
# True

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [100, 1, 2]

Ikiwa ungependa kuzichakata kando, kabidhi kwa kila moja.

after c = []; d = [], c and d are guaranteed to refer to two different, unique, newly created empty lists. (Note that c = d = [] assigns the same object to both c and d.)
3. Data model — Python 3.10.4 Documentation

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

print(a is b)
# False

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [0, 1, 2]

Pia kuna njia za kutoa nakala za kina kifupi na nakala () na nakala ya kina () kwenye moduli ya nakala.