Python’da bir listeden (diziden) eleman çıkarma: clear(), pop(), remove(), del

Python’da bir listeden (dizi) bir öğeyi çıkarmak için, clear(), pop() ve remove() liste yöntemlerini kullanın. Ayrıca dizin veya dilim kullanarak listenin konumunu ve aralığını belirtebilir ve ardından del ifadesini kullanarak silebilirsiniz.

Aşağıdaki bilgiler burada verilmiştir.

  • Tüm öğeleri kaldır:clear()
  • Belirtilen konumdaki bir elemanı silin ve değerini alın.:pop()
  • Belirtilen değere sahip öğeleri arar ve ilk öğeyi kaldırır.:remove()
  • İndeks diliminde konum ve aralık belirterek silme:del
  • Ölçütü karşılayan birden çok öğeyi toplu olarak silin.:liste ekleme göstergesi

Listelerin farklı türlerdeki verileri depolayabildiğini ve dizilerden kesinlikle farklı olduklarını unutmayın. Bellek boyutu veya bellek adresi gerektiren işlemler veya büyük ölçekli verilerin sayısal hesaplanması için dizileri işlemek istediğinizde dizi (standart kitaplık) veya NumPy kullanın.

Tüm öğeleri kaldır:clear()

clear() liste yönteminde, tüm öğeler kaldırılarak boş bir liste oluşur.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

Belirtilen konumdaki bir elemanı silin ve değerini alın.:pop()

Bir listenin pop() yöntemi, belirtilen bir konumdaki bir öğeyi silmek ve o öğenin değerini almak için kullanılabilir.

İlk (başlangıç) sayı 0’dır.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(0))
# 0

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(3))
# 4

print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]

Sondan (sondan) itibaren konumu belirtmek için negatif bir değer de kullanılabilir. Son (son) -1’dir.

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

Argüman atlanırsa ve herhangi bir konum belirtilmezse, sondaki (sondaki) öğe silinir.

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

Var olmayan bir konumun belirtilmesi bir hataya neden olacaktır.

# print(l.pop(100))
# IndexError: pop index out of range

İlk elemanı kaldıran pop(0)’un aşağıdaki maliyeti gerektirdiğini ve verimli bir işlem olmadığını unutmayın. Listelerdeki çeşitli işlemlerin hesaplama karmaşıklığı için resmi wiki’deki aşağıdaki sayfaya bakın.
O(n)

O(1)Deque tipi, standart kütüphane koleksiyonları modülünde elemanları bu maliyetle en üste silen bir tip olarak sağlanır. Örneğin, verileri bir kuyruk (FIFO) olarak ele almak istiyorsanız, deque kullanmak daha verimlidir.

Belirtilen değere sahip öğeleri arar ve ilk öğeyi kaldırır.:remove()

Liste yöntemi remove(), belirtilenle aynı değere sahip öğeleri aramak ve ilk öğeyi kaldırmak için kullanılabilir.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

Liste, belirtilen değerle eşleşen birden fazla öğe içeriyorsa, yalnızca ilk öğe kaldırılacaktır.

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

Var olmayan bir değer belirtilirse, bir hata oluşur.

# l.remove('xxx')
# ValueError: list.remove(x): x not in list

İndeks diliminde konum ve aralık belirterek silme:del

Öğeleri listeden çıkarmak için del ifadesini de kullanabilirsiniz.

Dizini tarafından silinecek öğeyi belirtin. İlk (ilk) dizin 0 ve son (son) dizin -1’dir.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]

del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]

Dilimli bir aralık belirtirseniz, aynı anda birden çok öğeyi silebilirsiniz.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]

l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]

l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]

l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]

Tüm aralığı belirtmek ve tüm öğeleri silmek de mümkündür.

l = list(range(10))
del l[:]
print(l)
# []

[start:stop:step]Dilimdeki aralığı bu şekilde belirtirseniz ve artımlı adımı belirtirseniz, birden çok atlama öğesini bir kerede silebilirsiniz.

l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]

l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]

Dilimleme hakkında daha fazla bilgi için aşağıdaki makaleye bakın.

Ölçütü karşılayan birden çok öğeyi toplu olarak silin.:liste ekleme göstergesi

Koşulları sağlayan öğelerin çıkarılması işlemi, koşulları sağlamayan öğelerin bırakılması (ayıklanması) sürecine eşdeğerdir. Liste anlama gösterimi bu tür işleme için kullanılır.

Tek veya çift öğelerin kaldırılmasına (= çift veya tek öğelerin bırakılması) bir örnek aşağıda gösterilmiştir.
%Bu, kalan operatördür.
i % 2
Bu, i’nin 2’ye bölümünden kalandır.

Liste anlama notasyonunda yeni bir liste oluşturulur. Şimdiye kadar tanıtılan liste türü yöntemlerinin aksine, orijinal liste değişmeden kalır.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]

print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]

print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Diğer örnekler. Koşullu ifadeye bağlı olarak çeşitli işlemler mümkündür.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']

print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']

print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']

Yinelenen öğeleri kaldırmak istiyorsanız, küme kümesi türünü kullanın.

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']