Python'da (2 ve 3). Liste dilimlemeyi her kullandığımızda yeni bir nesne döndürür, örneğin:
l1 = [1,2,3,4]
print(id(l1))
l2 = l1[:]
print(id(l2))
Çıktı
>>> 140344378384464
>>> 140344378387272
Aynı şey demet ile tekrarlanırsa, aynı nesne döndürülür, örneğin:
t1 = (1,2,3,4)
t2 = t1[:]
print(id(t1))
print(id(t2))
Çıktı
>>> 140344379214896
>>> 140344379214896
Birisi bunun neden olduğuna ışık tutabilirse harika olurdu, Python deneyimim boyunca boş dilim yeni bir nesne döndürdüğü izlenimi altındaydım.
Anladığım kadarıyla, tuplelerin değişmez olduğu aynı nesneyi döndürmesi ve bunun yeni bir kopyasını oluşturmanın bir anlamı yok. Ama yine de, belgelerde hiçbir yerde bahsedilmiyor.
l2 = tuple(iter(l1))
optimizasyonu atlar
PyTuple_GetSlice
yanlış belgelendiğini fark ettim . Dokümanlar şimdi düzeltildi (bu bpo sorunu 38557 idi ).