Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

readme.md

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 ihtiyacı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: ilk 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ü kaç tane alacağını bilmiyor y ve t için
# 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