(liste += i) ve (liste = liste + i) İkisinin aslında farklı şeyler olma ihtimali?

liste = []
alfabe = “abcçcdefgğhıijklmnoöprsştuüvyz”

for i in alfabe:
liste += i

**Merhaba, Python belgelerini çalışıyorum.

(liste += i) ve (liste = liste + i) aynı şeyler mi? Eğer aynı ise yukarıdaki kodlar düzgün çalışırken aşağıdaki kodlar neden hata veriyor.

liste = []
alfabe = “abcçcdefgğhıijklmnoöprsştuüvyz”

for i in alfabe:
liste = liste + i

-----------Aldığım hata----------
Traceback (most recent call last):
File “/Users/atahanbasaran/Desktop/Untitled.py”, line 5, in
liste = liste + i
TypeError: can only concatenate list (not “str”) to list

1 Beğeni

liste = liste + i ifadesi yerine
liste = liste + [i] ifadesini yazmalısın.

i harfi alfabe’deki bir karakter, bu veri tipi ile liste türündeki bir veriyi toplayamazsın. Köşeli parantez içine alırsan i harfi tek elemanlık bir dizi olur. Böylece iki diziyi toplayabilirsin.

Merhabalar,

Evet liste += i ve liste = liste + i farklı şeyler. Aralarında (en az) iki fark var:

1- liste += i yeni bir liste oluşturmaz, halihazırdaki listeyi modifiye eder.
liste = liste + i ise hafızada yeni bir liste oluşturur.

2- liste += i yazdığınızda listelerin __iadd__ (in-place add) metodu çağrılır. Bu metot i değişkeni için herhangi bir iterable’ı kabul eder. Yani bu sizin örneğinizde olduğu gibi string de olabilir, liste de olabilir, demet de.
Öbür taraftan liste = liste + i için listelerin __add__ metodu çağrılır, bu metot i değişkeninin liste olmasını ister, diğer iterable’lar için çalışmaz.

5 Beğeni