Listenin amaçlanan davranışıyla ilgili bir şey eksik olabilir, ancak neden aşağıdakiler oluyor?Python'da listelerin bir listesini genişletiyor musunuz?
x = [[],[]]
y = [[]] * 2
print x # [[],[]]
print y # [[],[]]
print x == y # True
x[0].extend([1])
y[0].extend([1])
print x # [[1],[]], which is what I'd expect
print y # [[1],[1]], wtf?
Ben tam olarak emin değilim gerçi, *
operatör burada beklenmedik bir şey yaptığını tahmin ediyorum. Kaputun altında, orijinal x ve y (uzatmadan önce) yapmak, ==
ve repr
'un her ikisi de aynı oldukları gibi görünmesine rağmen aslında eşit olmayacak gibi görünüyor.
Sadece bunun için geldim çünkü çalışma zamanında belirlenen bir boyuttaki boş listelerin bir listesini önceden doldurmak istedim ve daha sonra hayal ettiğim şekilde çalışmadığını fark ettim. Aynı şeyi yapmak için daha iyi bir yol bulabilirim, ama şimdi bunun neden işe yaramadığını merak ediyorum. Bu Python 2.5.2 BTW - Ben daha yeni bir sürümü yüklü değil bu yüzden eğer bu bir hata ise zaten düzeltildi emin değilim.
Eklemenin ne olduğunun farkındayım, sadece soru uğruna tartışılmış bir örnekle geliyordum. –