Python-da çubuqları və siyahıları paketdən çıxarın (genişləndirin və çoxlu dəyişənlərə təyin edin).

Biznes

Python-da bir dəst və ya siyahının elementləri genişləndirilə və çox dəyişənlərə təyin edilə bilər. Bu, ardıcıllıqla açılma və ya açılmamış tapşırıq adlanır.

Aşağıdakı təfərrüatlar burada təsvir edilmişdir.

  • Tuples və siyahıların əsaslarının açılması
  • İç-içə tuples, açılmamış siyahılar
  • Alt xətt ilə qablaşdırmanın açılması:_
  • Ulduz işarələri ilə qablaşdırmanın açılması:*

Kortları, siyahıları və lüğətləri funksiya arqumentləri kimi genişləndirmək və ötürmək üçün ulduz işarələrindən istifadə haqqında məlumat üçün aşağıdakı məqaləyə baxın.

Tuples və siyahıların əsaslarının açılması

Dəyişənlər sol tərəfdə vergüllə ayrılaraq yazıldıqda, hər bir dəyişənə sağ tərəfdə dəst və ya siyahının elementi təyin edilir. Bu, həm dəstlər və siyahılar üçün eynidir (aşağıdakı nümunələr tuple şəklində yazılmışdır).

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

Qeyd edək ki, dəzgahlar dairəvi mötərizələri buraxa bildiyi üçün bu, aşağıdakı kimi bir sətirdə çoxlu dəyişənlərə çoxlu qiymətlər təyin etmək üçün istifadə edilə bilər.

a, b = 0, 1

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

Əgər dəyişənlərin sayı elementlərin sayına uyğun gəlmirsə, xəta baş verir.

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

Əgər dəyişənlərin sayı elementlərin sayından azdırsa, qalan elementlər dəyişənin adına ulduz işarəsi əlavə etməklə siyahı kimi təyin edilə bilər (aşağıya bax).

İç-içə tuples, açılmamış siyahılar

İç-içə yığılmış dəstlər və siyahılar da açıla bilər. Əgər siz də məzmunu açmaq istəyirsinizsə, dəyişəni aşağıdakılardan birinə əlavə edin

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

_alt xətt_ ilə açılmışdır.

Python-da sadəcə açılmamış, lazım olmayan dəyərlər şərti olaraq alt xətt (alt xətt) _-ə təyin edilir. Xüsusi qrammatik məna yoxdur; onlar sadəcə olaraq _ adlı dəyişənə təyin olunurlar.

t = (0, 1, 2)

a, b, _ = t

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

Ulduz işarələri ilə qablaşdırmanın açılması

Dəyişənlərin sayı elementlərin sayından azdırsa, dəyişən adındakı ulduz elementlərin siyahı kimi birlikdə təyin edilməsinə səbəb olacaq.

Bu sintaksis Python 3-dən bəri həyata keçirilir və Python 2-də mövcud deyil.

Elementlər əvvəldən və axırdan ulduzsuz dəyişənlərə, qalan elementlər isə ulduz işarəli dəyişənlərə siyahı kimi təyin edilir.

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

Məsələn, bir dəyişənə və ya siyahının yalnız ilk iki elementini təyin etmək istəyirsinizsə, lazım olmayan hissələr üçün yuxarıdakı alt xəttdən istifadə edə bilərsiniz.

a, b, *_ = t

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

Eyni şeyi aşağıdakı kimi də yazmaq olar

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

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

Yalnız bir ulduz əlavə edilə bilər. Ulduz işarəsi ilə işarələnmiş bir neçə dəyişən varsa, hər bir dəyişənə neçə element təyin olunduğunu müəyyən etmək mümkün olmadığı üçün SyntaxError xətası yaranır.

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

Qeyd edək ki, hətta ulduz işarəsi ilə işarələnmiş dəyişənə təyin edilmiş tək element də siyahı kimi təyin edilir.

t = (0, 1, 2)

a, b, *c = t

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

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

Əlavə elementlər yoxdursa, boş bir siyahı təyin edilir.

a, b, c, *d = t

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