Уклањање елемената са листе (низа) у Питхон-у: цлеар(), поп(), ремове(), дел

Бусинесс

Да бисте уклонили елемент са листе (низа) типа листа у Питхон-у, користите методе листе цлеар(), поп() и ремове(). Такође можете одредити позицију и опсег листе коришћењем индекса или пресека, а затим је обрисати користећи дел наредбу.

Овде се налазе следеће информације.

  • Уклоните све елементе:clear()
  • Избришите елемент на наведеној позицији и добијте његову вредност.:pop()
  • Тражи елементе са наведеном вредношћу и уклања први елемент.:remove()
  • Брисање навођењем позиције и опсега у индексном пресеку:del
  • Групно брисање више елемената који испуњавају критеријуме.:индикација за укључивање листе

Имајте на уму да листе могу да чувају податке различитих типова и да се стриктно разликују од низова. Користите низ (стандардна библиотека) или НумПи када желите да рукујете низовима за процесе који захтевају величину меморије или меморијску адресу, или за нумеричко израчунавање података великих размера.

Уклоните све елементе:clear()

У методи листе цлеар(), сви елементи се уклањају, што резултира празном листом.

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

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

Избришите елемент на наведеној позицији и добијте његову вредност.:pop()

Метода поп() листе може се користити за брисање елемента на одређеној позицији и добијање вредности тог елемента.

Први (почетни) број је 0.

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]

Негативна вредност се такође може користити за одређивање позиције са краја (последње). Крај (последњи) је -1.

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

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

Ако је аргумент изостављен и није наведена позиција, елемент на крају (последњем) се брише.

print(l.pop())
# 9

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

Навођење непостојеће позиције ће довести до грешке.

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

Имајте на уму да поп(0), који уклања први елемент, захтева следеће трошкове и није ефикасна операција. Погледајте следећу страницу на званичној вики за рачунску сложеност различитих операција на листама.
O(n)

O(1)Декуе тип је обезбеђен у модулу колекција стандардних библиотека као тип који брише елементе на врх по овој цени. На пример, ако желите да третирате податке као ред (ФИФО), ефикасније је користити декуе.

Тражи елементе са наведеном вредношћу и уклања први елемент.:remove()

Метод листе ремове() се може користити за тражење елемената са истом вредношћу као што је наведено и за уклањање првог елемента.

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

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

Ако листа садржи више од једног елемента који одговара наведеној вредности, само први ће бити уклоњен.

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

Ако је наведена непостојећа вредност, долази до грешке.

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

Брисање навођењем позиције и опсега у индексном пресеку:del

Такође можете користити дел наредбу да уклоните елементе са листе.

Наведите елемент који ће се избрисати помоћу његовог индекса. Први (почетни) индекс је 0, а последњи (коначни) индекс је -1.

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]

Ако наведете опсег са резовима, можете избрисати више елемената одједном.

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]

Такође је могуће одредити цео опсег и избрисати све елементе.

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

[start:stop:step]Ако на овај начин наведете опсег у резу и наведете инкрементални корак, можете избрисати више елемената за прескакање одједном.

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]

За више информација о резању, погледајте следећи чланак.

Групно брисање више елемената који испуњавају критеријуме.:индикација за укључивање листе

Процес уклањања елемената који испуњавају услове је еквивалентан процесу напуштања (извлачења) елемената који не задовољавају услове. За ову врсту обраде користи се нотација разумевања листе.

Пример уклањања непарних или парних елемената (= остављање парних или непарних елемената) је приказан испод.
%Ово је оператор остатка.
i % 2
Ово је остатак од и подељен са 2.

У нотацији за разумевање листе, креира се нова листа. За разлику од до сада уведених метода типа листе, оригинална листа остаје непромењена.

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]

Други примери. Могућа је разноврсна обрада у зависности од условног израза.

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']

Ако желите да уклоните дупле елементе, користите тип скупа.

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