Python-da siyahıdan (massivdən) elementlərin çıxarılması: clear(), pop(), remove(), del

Biznes

Python-da tipli siyahıdan (massivdən) elementi silmək üçün clear(), pop() və remove() siyahı üsullarından istifadə edin. Siz həmçinin indeks və ya dilimdən istifadə edərək siyahının mövqeyini və diapazonunu təyin edə və sonra onu del ifadəsindən istifadə edərək silə bilərsiniz.

Aşağıdakı məlumatlar burada verilir.

  • Bütün elementləri çıxarın:clear()
  • Müəyyən edilmiş mövqedəki elementi silin və dəyərini əldə edin.:pop()
  • Göstərilən dəyəri olan elementləri axtarır və birinci elementi çıxarır.:remove()
  • İndeks dilimində mövqe və diapazon göstərilməklə silinir:del
  • Kriteriyalara cavab verən çoxlu elementləri toplu silin.:siyahıya daxil olma göstəricisi

Qeyd edək ki, siyahılar müxtəlif tipli məlumatları saxlaya bilər və massivlərdən ciddi şəkildə fərqlənir. Yaddaş ölçüsü və ya yaddaş ünvanı tələb edən proseslər üçün massivləri idarə etmək və ya böyük miqyaslı məlumatların ədədi hesablanması üçün massiv (standart kitabxana) və ya NumPy istifadə edin.

Bütün elementləri çıxarın:clear()

Siyahı metodunda clear(), bütün elementlər silinir, nəticədə boş siyahı yaranır.

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

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

Müəyyən edilmiş mövqedəki elementi silin və dəyərini əldə edin.:pop()

Siyahının pop() metodu müəyyən mövqedəki elementi silmək və həmin elementin dəyərini almaq üçün istifadə edilə bilər.

İlk (ilkin) rəqəm 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]

Mənfi dəyər də sondan (sondan) mövqeyi müəyyən etmək üçün istifadə edilə bilər. Son (son) -1-dir.

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

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

Arqument buraxılıbsa və heç bir mövqe göstərilməyibsə, sonunda (sonuncu) element silinir.

print(l.pop())
# 9

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

Mövcud olmayan mövqenin göstərilməsi xəta ilə nəticələnəcək.

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

Qeyd edək ki, birinci elementi silən pop(0) aşağıdakı xərcləri tələb edir və səmərəli əməliyyat deyil. Siyahılar üzrə müxtəlif əməliyyatların hesablama mürəkkəbliyi üçün rəsmi vikidə aşağıdakı səhifəyə baxın.
O(n)

O(1)Deque növü standart kitabxana kolleksiyaları modulunda bu qiymətə yuxarıdakı elementləri silən bir növ kimi təqdim olunur. Məsələn, məlumatı növbə (FIFO) kimi qəbul etmək istəyirsinizsə, deque istifadə etmək daha səmərəlidir.

Göstərilən dəyəri olan elementləri axtarır və birinci elementi çıxarır.:remove()

Siyahı metodu remove() müəyyən edilmiş eyni dəyərə malik elementləri axtarmaq və birinci elementi silmək üçün istifadə edilə bilər.

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

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

Siyahıda göstərilən dəyərə uyğun gələn birdən çox element varsa, yalnız birincisi silinəcək.

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

Mövcud olmayan dəyər göstərilibsə, xəta baş verir.

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

İndeks dilimində mövqe və diapazon göstərilməklə silinir:del

Siz həmçinin siyahıdan elementləri silmək üçün del ifadəsindən istifadə edə bilərsiniz.

Silinəcək elementi indeksi ilə təyin edin. Birinci (ilkin) indeks 0, sonuncu (son) indeks isə -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]

Dilimlərlə aralığı təyin etsəniz, birdən çox elementi silə bilərsiniz.

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]

Bütün diapazonu müəyyən etmək və bütün elementləri silmək də mümkündür.

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

[start:stop:step]Bu şəkildə dilimdəki diapazonu təyin etsəniz və artımlı addımı təyin etsəniz, birdən çox atlama elementini silə bilərsiniz.

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]

Dilimləmə haqqında daha çox məlumat üçün aşağıdakı məqaləyə baxın.

Kriteriyalara cavab verən çoxlu elementləri toplu silin.:siyahıya daxil olma göstəricisi

Şərtləri təmin edən elementlərin çıxarılması prosesi şərtləri təmin etməyən elementlərin tərk edilməsi (çıxarılması) prosesinə bərabərdir. Siyahının başa düşülməsi qeydi bu cür emal üçün istifadə olunur.

Tək və ya cüt elementlərin (= cüt və ya tək elementlərin tərk edilməsi) çıxarılması nümunəsi aşağıda göstərilmişdir.
%Bu qalan operatordur.
i % 2
Bu, i-nin 2-yə bölünməsinin qalan hissəsidir.

Siyahının başa düşülməsi qeydində yeni siyahı yaradılır. İndiyə qədər təqdim edilən siyahı növü metodlarından fərqli olaraq, orijinal siyahı dəyişməz olaraq qalı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]

Digər nümunələr. Şərti ifadədən asılı olaraq müxtəlif emallar 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']

Dublikat elementləri silmək istəyirsinizsə, dəst dəsti növündən istifadə edin.

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