Python-д tuple эсвэл жагсаалтын элементүүдийг өргөтгөж, олон хувьсагчдад оноож болно. Үүнийг дараалсан задлах буюу задлах даалгавар гэж нэрлэдэг.
Дараах дэлгэрэнгүй мэдээллийг энд тайлбарласан болно.
- Tuple болон жагсаалтын үндсэн ойлголтуудыг задлах
- Үүрдсэн tuples, задалсан жагсаалт
- Доод зураасаар задалж байна:
_
- Одоор буулгаж байна:
*
Дараах нийтлэлээс одоор тэмдэглэгээг ашиглан товхимол, жагсаалт, толь бичгийг функцын аргумент болгон өргөжүүлэх, дамжуулах тухай мэдээллийг үзнэ үү.
- ХОЛБООТОЙ:Жагсаалт, толь бичиг, толь бичгүүдийг Python дээр функцын аргумент болгон өргөжүүлэх, дамжуулах
Tuple болон жагсаалтын үндсэн ойлголтуудыг задлах
Хувьсагчдыг зүүн гар талд таслалаар тусгаарлаж бичих үед хувьсагч бүрд баруун талд нь товхимол буюу жагсаалтын элементийг онооно. Энэ нь tuple болон жагсаалтын аль алинд нь адилхан (дараах жишээг 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
Түлхүүр нь дугуй хаалт орхих боломжтой тул үүнийг дараах байдлаар нэг мөрөнд олон хувьсагчдад олон утгыг оноож болно гэдгийг анхаарна уу.
a, b = 0, 1
print(a)
print(b)
# 0
# 1
Хэрэв хувьсагчийн тоо нь элементийн тоотой таарахгүй байвал алдаа гарна.
# 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)
Хэрэв хувьсагчийн тоо нь элементийн тооноос бага байвал хувьсагчийн нэрэнд одоор хавсаргаж үлдсэн элементүүдийг жагсаалт болгон оноож болно (доороос харна уу).
Үүрдсэн tuples, задалсан жагсаалт
Суурилуулсан tuple болон жагсаалтыг мөн задлах боломжтой. Хэрэв та мөн агуулгыг задлахыг хүсвэл хувьсагчийг дараах зүйлсийн аль нэгэнд хавсаргана уу
()
[]
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
Доод зураасаар задалсан.
Python-д зөвхөн задлахаас гадна шаардлагагүй утгуудыг доогуур зураас (доод зураас) _-д өгдөг. Дүрэм зүйн тусгай утга байхгүй; тэдгээрийг _ нэртэй хувьсагчдад зүгээр л оноодог.
t = (0, 1, 2)
a, b, _ = t
print(a)
print(b)
print(_)
# 0
# 1
# 2
Одоор буулгаж байна
Хэрэв хувьсагчийн тоо нь элементийн тооноос бага байвал хувьсагчийн нэрэнд байгаа од нь элементүүдийг жагсаалт хэлбэрээр хамтад нь хуваарилахад хүргэдэг.
Энэ синтакс нь Python 3-аас хойш хэрэгжсэн бөгөөд Python 2-д байхгүй.
Элементүүдийг эхэн ба төгсгөлөөс эхлэн одгүй хувьсагчид, үлдсэн элементүүдийг одоор тэмдэглэгдсэн хувьсагчдад жагсаалт хэлбэрээр хуваарилдаг.
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
Жишээлбэл, хэрэв та хувьсагчид жагсаалтын эхний хоёр элементийг оноохыг хүсвэл шаардлагагүй хэсгүүдэд дээрх доогуур зураасыг ашиглаж болно.
a, b, *_ = t
print(a)
print(b)
print(_)
# 0
# 1
# [2, 3, 4]
Үүнтэй ижил зүйлийг дараах байдлаар бичиж болно
a, b = t[0], t[1]
print(a)
print(b)
# 0
# 1
Зөвхөн нэг од хавсаргах боломжтой. Хэрэв одоор тэмдэглэгдсэн олон хувьсагч байгаа бол хувьсагч бүрт хэдэн элемент оноогдсоныг тодорхойлох боломжгүй тул SyntaxError алдаа гарна.
# *a, b, *c = t
# SyntaxError: two starred expressions in assignment
Одоор тэмдэглэгдсэн хувьсагчдад оноогдсон ганц элемент хүртэл жагсаалтаар томилогдсон гэдгийг анхаарна уу.
t = (0, 1, 2)
a, b, *c = t
print(a)
print(b)
print(c)
# 0
# 1
# [2]
print(type(c))
# <class 'list'>
Хэрэв нэмэлт элемент байхгүй бол хоосон жагсаалтыг өгнө.
a, b, c, *d = t
print(a)
print(b)
print(c)
print(d)
# 0
# 1
# 2
# []