Odak modu

Python Temel

Varible Unpacking

Variable Unpacking


  • Şimdiye kadar hep tek değişkene tek değer verdik.


  • Peki bir seferde birden çok değişkene değer vermek için ne yaparız?


  • Aşağıdaki kodun sonucu,

x=4

y=7

ile aynı

x, y = (4, 7)


x


4


y


7


  • 2'den çok değere de bunu yapabiliriz.


x, y, z = (4, 7, 11)


print(x, y ,z)


4 7 11


Bazı Değerlere İhtiyacım Yoksa:


  • Diyelim ki soldaki yapının sadece birinci elemanına bir değer eşitleyip kullanmak istiyorum. Daha önce döngülerde yaptığımız gibi kulllanmayacağımız değişkene _ diyebiliriz.


x, _ = (4, 7)


Sol ve Sağdaki Yapı Farklı Sayıdaysa:


x, y, z = (4, 7, 11, 4, 21)



---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-67-483af8373571> in <module>
----> 1 x, y, z = (4, 7, 11, 4, 21)


ValueError: too many values to unpack (expected 3)


  • Bunu gidermek için * yapısını kullanacağız. Aşağıdaki kod şu demek oluyor: İlk iki elemanı x ve y'ye eşitle, sonuna kadar kalan diğer tüm elemanları z'ye eşitle. Bunun sonunda z 11,2,21'den oluşacak, tipi list olacak.


x, y, *z = (4, 7, 11, 4, 21)


x


4


y


7


z


[11, 4, 21]


type(z)


list


  • Diyelim ki ilk 2 'sini eşitleyip kalan hepsini görmezden gelmek istiyorum.


x, y, *_ = (4, 7, 11, 12, 13)


x


4


y


7


  • İlk 2 ve son değeri belirli bir değişkene, arada kalanların hepsini başka bir değişkene eşitlemek istiyorsam:


x, y, *z, t = (4, 7, 11, 4, 21)


x


4


y


7


z


[11, 4]


t


21


  • Aynı şekilde son 2'yi de belirtebiliriz.


x, y, *z, t, u = (4, 7, 11, 4, 21, 32, 2)


z


[11, 4, 21]


t


32


u


2


  • Ama aşağıdaki kod error verir, çünkü y ve t için kaç tane alacağını bilmiyor.


# It will give an error
x, *y, *t = (4, 7, 11, 4)


  File "<ipython-input-96-d7caec8953ac>", line 5
SyntaxError: two starred expressions in assignment


Background Pattern
Birlikte öğrenelim

Sektörde en çok aranan yazılım becerilerini kazan

Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.

Yunus Emre Kabakcı

Patika+ mezunu

Patika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,

3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!


“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“

Test

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!