-
Ş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)x4
y7
- 2'den çok değere de bunu yapabiliriz
x, y, z = (4, 7, 11)print(x, y ,z)4 7 11
- 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)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)x4
y7
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)x4
y7
- İ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)x4
y7
z[11, 4]
t21
- Aynı şekilde son 2'yi de belirtebiliriz
x, y, *z, t, u = (4, 7, 11, 4, 21, 32, 2)z[11, 4, 21]
t32
u2
- 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