Щоб видалити елемент зі списку (масиву) типу list у Python, використовуйте методи списку clear(), pop() і remove(). Ви також можете вказати позицію та діапазон списку за допомогою індексу або фрагмента, а потім видалити його за допомогою оператора del.
Тут наведено наступну інформацію.
- Видаліть усі елементи:
clear()
- Видаліть елемент у вказаній позиції та отримайте його значення.:
pop()
- Шукає елементи із зазначеним значенням і видаляє перший елемент.:
remove()
- Видалення шляхом вказівки позиції та діапазону в індексному фрагменті:
del
- Пакетне видалення кількох елементів, які відповідають критеріям.:індикація включення до списку
Зауважте, що списки можуть зберігати дані різних типів і строго відрізняються від масивів. Використовуйте масив (стандартна бібліотека) або NumPy, коли ви хочете обробляти масиви для процесів, які потребують розміру пам’яті або адреси пам’яті, або для чисельного обчислення великомасштабних даних.
- Видаліть усі елементи:clear()
- Видаліть елемент у вказаній позиції та отримайте його значення.:pop()
- Шукає елементи із зазначеним значенням і видаляє перший елемент.:remove()
- Видалення шляхом вказівки позиції та діапазону в індексному фрагменті:del
- Пакетне видалення кількох елементів, які відповідають критеріям.:індикація включення до списку
Видаліть усі елементи:clear()
У методі списку clear() усі елементи видаляються, що призводить до порожнього списку.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
Видаліть елемент у вказаній позиції та отримайте його значення.:pop()
Метод 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
Зверніть увагу, що pop(0), який видаляє перший елемент, вимагає наступних витрат і не є ефективною операцією. Перегляньте наступну сторінку в офіційній вікі, щоб дізнатися про складність обчислень різних операцій над списками.O(n)
O(1)
Тип deque надається в модулі колекцій стандартної бібліотеки як тип, який видаляє елементи вгору за цю вартість. Наприклад, якщо ви хочете розглядати дані як чергу (FIFO), ефективніше використовувати deque.
Шукає елементи із зазначеним значенням і видаляє перший елемент.:remove()
Метод list 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
Ви також можете використовувати оператор 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]
Щоб дізнатися більше про нарізку, перегляньте наступну статтю.
Пакетне видалення кількох елементів, які відповідають критеріям.:індикація включення до списку
Процес видалення елементів, які задовольняють умовам, еквівалентний процесу залишення (вилучення) елементів, які не задовольняють умовам. Для цього виду обробки використовується позначення розуміння списку.
- Пов’язані статті:Використання нотації розуміння списку Python
Приклад видалення непарних або парних елементів (= залишення парних або непарних елементів) показано нижче.%
Це оператор залишку.i % 2
Це залишок i, поділений на 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']