Python, listelerden elemanları silmek için remove(), pop() ve del operatörü gibi birçok yöntem sunar. Her yaklaşımın kendine özgü nüansları vardır. Doğru seçim, bir elemanı değerine, indeksine göre silmeniz, kaldırılan değeri almanız veya sadece bir elemanı çıkarmanız gerekip gerekmediğine bağlıdır.
remove(), pop() ve del arasındaki karışıklık, genellikle hatalara yol açar: Yanlış yöntem seçimi bir istisna fırlatabilir veya yanlış bir elemanı yok edebilir. Ayrıca, geri dönen değer ile ne olacağı ve farklı yöntemlerin listede eleman bulunmadığında nasıl davrandığını bilmek önemlidir.
remove(x) değeri x olan ilk karşılaşılan elemanı siler — böyle bir değer yoksa ValueError istisnası fırlatırpop([i]) indeksi i olan elemanı siler ve geri döner (indeks verilmezse — son eleman). Eğer indeks aralığın dışında ise — IndexError fırlatırdel list[i] indekse göre elemanı siler, geri değer döndürmez. Dilimler de silinebilir (del list[i:j])Kod örneği:
lst = [10, 20, 30, 20] lst.remove(20) # [10, 30, 20] lst.pop(1) # 30'u siler, [10, 20] del lst[0] # [20]
Ana özellikler:
Listede mevcut olmayan bir değer için remove() çağırılırsa ne olur?
ValueError oluşur:
lst = [1, 2] lst.remove(5) # ValueError: list.remove(x): x not in list
Listeden henüz silinen bir elemanı nasıl geri alabilirim?
Yalnızca pop silinen elemanı geri döndürür.
lst = [7, 8, 9] x = lst.pop() # x = 9
Değer ile silmek için del kullanmak mümkün mü?
Hayır, del yalnızca indeks veya dilim ile çalışır. Değer olarak yalnızca remove ile silinebilir.
** Olumsuz Durum Programcı range(len(lst)) ile bir döngü yazar ve elemanları del ile siler — indeksleme bozulur, elemanlar atlanır. Artılar: Yeni başlayanlar için "doğrudan ve mantıklı" Eksiler: Beklenmedik davranışlar elde etmek kolaydır — bazı elemanlar silinmez, liste beklenildiği gibi çalışmaz. **Olumlu Durum Değerle silmeden önce — kontrol vardır, indeks garantili ise pop kullanılır, indeksle silme ters sırada yapılır. Artılar: Kod hatalara karşı dayanıklıdır, eleman atlamaları yoktur Eksiler: Bazen kod biraz daha uzun ama şeffaf ve güvenlidir.