Рубрики
Без рубрики

Список Python Clear ()

Удивительно, что даже продвинутые кодеры Python не знают о чистом () методе списков Python. Время изменить это! Определение и использование: метод list.celear () удаляет все элементы из существующего списка. Список снова становится пустым. Вот короткий пример: >>> lst = [1, 2, 3, 4, 5] >>> lst.clear () >>> lst [] в … Python List Clear () Подробнее »

Автор оригинала: Chris.

Удивительно, даже продвинутые кодеры Python не знают о Очистить () Метод списков Python. Время изменить это!

Определение и использование : list.clear () Способ удаляет все элементы из существующего Список Отказ Список снова становится пустым.

Вот краткий пример:

>>> lst = [1, 2, 3, 4, 5]
>>> lst.clear()
>>> lst
[]

В первой строке вы создаете список lst состоящий из пяти целых чисел. Затем вы удалите все элементы из списка. Результатом является пустой список.

Синтаксис : Вы можете вызвать этот метод на каждом объекте списка в Python. Вот синтаксис:

list.clear ()

Аргументы: Метод не имеет никакого аргумента.

Возвращаемое значение: Метод list.clear () имеет возврат ценности Нет Отказ Он работает в существующем списке и, следовательно, не возвращает новый список с удаленным элементом

Видео:

Статьи по Теме:

  • Окончательное руководство по спискам Python

Вот ваш бесплатный PDF чит-лист, показывающий вас все методы списка Python на одной простой странице. Нажмите на изображение, чтобы загрузить файл PDF с высоким разрешением, распечатать его и опубликовать его в свою офисную стену:

Список Python Clear () VS Новый список

Теперь, если вы являетесь рекламой Alert, вы можете задать следующий интересный вопрос: зачем использовать метод CLEAR () в первую очередь, когда вы также можете просто создать новый список и сделать с ним?

Вот пример, где оба пути приводят к одному и тому же результату:

>>> lst = [1, 2, 3]
>>> lst.clear()
>>> lst
[]
>>> lst = [1, 2, 3]
>>> lst = []
>>> lst
[]

Я знаю, что код, кажется, немного нечетным, но он показывает, что вместо очистки существующего списка вы также можете создать новый список. В этом случае это приводит к тому же результату.

Однако Python является объектно-ориентированным языком. И если вы просто создаете новый объект и назначаете его переменной, исходный список все еще существует в памяти. И другие переменные могут указывать на объект.

Рассмотрим следующий фрагмент кода, который применяет это:

lst = [1, 2, 3]
lst_2 = lst
lst = []
print(lst_2)
# [1, 2, 3]

Я создал визуализацию Python для вас, чтобы вы могли видеть объекты в памяти:

Просто назначить новый список для переменной lst оставит другую переменную lst_2 Независимо. Вместо этого вы должны были использовать lst.clear (), чтобы убедиться, что обе переменные теперь указывают на тот же пустой объект списка.

lst = [1, 2, 3]
lst_2 = lst
lst.clear()
print(lst_2)
# []

Список Python Clear () память

Эффект Очистить () Способ заключается в том, что список теперь пусто.

Теоретически вы выпустили виртуальную машину Python от бремени хранения элементов в памяти. Python использует Ссылка подсчет Чтобы определить, если некоторые элементы в памяти больше не ссылаются (и, таким образом, можно считать неиспользованным). Эти элементы будут удалены – мы говорим, они освобожден из памяти. Если вы очистите список, вы по существу вы удалите все ссылки из списка в элементы списка. Тем не менее, некоторые старые элементы списка могут по-прежнему упоминаться извне (например, другой переменной). Таким образом, они не обязательно удаляются, потому что они все еще могут быть необходимы! Просто держите это в виду, когда очистите список.

На практике, однако, даже ссылочные элементы все еще могут существовать в памяти до Сборщик мусора Python (или даже операционная система) удаляет элементы из памяти.

Список Python Clear () сложность

Сложность времени выполнения list.clear () это O (n) Для списка с N элементы. Почему? Ну, вам сначала нужно понять, что произойдет, если вы удалите все элементы из списка. Список элементов не физически (или, для этого, в цифровом виде) хранится в списке. Список содержит только ссылки на объекты элементов реального списка в памяти. Если вы очистите список, вы удалите все эти ссылки.

Мусорный коллектор В Python проходит все элементы в памяти, чтобы удалить те, которые имеют ссылочный счетчик нуля. Почему? Потому что они являются теми, которые не могут быть доступны в коде. Таким образом, сборщик мусора может благополучно предположить, что они не используются и больше не нужны. Как видите, сборщик мусора нуждается в информации о ссылке для каждого элемента в памяти.

Алгоритм при очистке списка прост: Уменьшите ссылочное значение каждого объекта элемента каждого списка на один Отказ Объекты, которые в конечном итоге со ссылкой с нулем, теперь могут быть удалены из памяти. Но, как вам нужно перейти на все элементы списка элементов, сложность выполнения является линейным до размера списка.

Список Python Clear () не работает

Python list.clear () Способ добавляли в Python 3.3 ( Официальный источник ). Поэтому, если вы попытаетесь использовать его для любой версии Python до этого, вы должны использовать del list [:] Способ, который семантически эквивалентен и работает для более ранних версий Python.

Сопутствующие статьи на блоге Finxter:

  • Как проверить вашу версию Python?

Список Python Clear () Версия 2.7

Вы пытались использовать Python list.clear () В Python 2.7? Это невозможно. Очистить () Способ добавляли в Python 3.3 ( Официальный источник ). Поэтому, если вы попытаетесь использовать его для любой версии Python до этого (включая 2.7), вы должны использовать del list [:] Способ, который семантически эквивалентен и работает для более ранних версий Python.

Сопутствующие статьи на блоге Finxter:

  • Как проверить вашу версию Python?

Список Python Clear () vs del

Вы можете спросить: в чем разница между list.clear () метод и то дель Операция?

Ответ прост: нет никакой семантической разницы. То list.clear () Метод просто синтаксический сахар для del list [:] ( источник ).

Вот пример, демонстрирующий, что оба на самом деле такие же:

>>> lst = [1, 2, 3]
>>> lst.clear()
>>> lst
[]
>>> lst = [1, 2, 3]
>>> del lst[:]
>>> lst
[]

Список удаления альтернатив

Есть несколько альтернативных методов списка для удаления элементов из списка. Смотрите таблицу обзора:

lst.remove (x) Удалите элемент из списка (по значению)
lst.pop () Удалите элемент из списка (по индексу) и верните элемент
lst.clear () Удалите все элементы из списка
del lst [3] Удалите один или несколько элементов из списка (по индексу или ломтию)
Список понимания Удалите все элементы, которые соответствуют определенному условию

Список Python Clear () Безопасность резьбы

У вас есть несколько потоков, которые одновременно получают доступ к вашему списку? Тогда вы должны быть уверены, что операции списка (такие как Clear () ) на самом деле резьба безопасна Отказ

Другими словами: вы можете позвонить в Очистить () Операция в двух потоках в том же списке одновременно? (И вы можете быть уверены, что результат является значимым?)

Ответ да (если вы используете Mokef Cpython внедрение). Причина – Питона Блокировка глобального интерпретатора Это гарантирует, что поток, работающий в данный момент в этом коде, сначала завершит текущую базовую операцию Python, как определено реализацией CPYPHON. Только если оно завершится с помощью этой операции, сможет получить следующий поток для доступа к вычислительному ресурсу. Это обеспечивается сложной схемой блокировки в результате реализации CPYPHON.

Единственное, что вам нужно знать, состоит в том, что каждая основная операция в реализации CPYPHON является атомный Отказ Он выполнен полностью и сразу, прежде чем любой другой поток имеет возможность запустить на одном виртуальном двигателе. Поэтому нет условий расы. Примером для такого состояния гонки будет следующее: Первый поток считывает значение из списка, вторые потоки перезаписывают значение, и первая тема перезаписывает значение снова недействительным в операции второго потока.

Все операции Cpython являются потоковыми безопасными. Но если вы объединяете эти операции на функции более высокого уровня, это не в целом без резьбы, поскольку они состоят из многих (возможно, чередующихся) операций.

Python List Четкие дубликаты

Как удалить все дубликаты данного значения в списке?

Наивный подход – пройти каждый элемент и проверять, существует ли этот элемент в списке. Если это так, удалите его. Однако это требует нескольких строк кода.

Короче и более лаконичный способ состоит в том, чтобы создать словарь из элементов в списке. Каждый элемент списка становится новым ключом к словарю. Все элементы, которые происходят несколько раз, будут присвоены к тому же ключу. Словарь содержит только уникальные ключевые ключи – не могут быть несколько равных клавиш.

В качестве значений словаря вы просто принимаете фиктивные значения (по умолчанию).

Связанные статьи в блоге:

  • Проверьте мой Ultimate Tutorial Tutorial для максимального обучения!

Затем вы просто преобразуете словарь обратно в список, выбрасывающие значения фиктивных значений. Поскольку словарные ключи остаются в том же порядке, вы не теряете информацию о заказе элементов оригинального списка.

Вот код:

>>> lst = [1, 1, 1, 3, 2, 5, 5, 2]
>>> dic = dict.fromkeys(lst)
>>> dic
{1: None, 3: None, 2: None, 5: None}
>>> duplicate_free = list(dic)
>>> duplicate_free
[1, 3, 2, 5]

Куда пойти отсюда?

list.clear () Способ удаляет все элементы из Список Отказ

Вы узнали INS и ауты этого важного способа списка Python.

Если вы продолжаете бороться с теми основными командами Python, и вы чувствуете застрявшие в своем прогрессе обучения, у меня есть что-то для вас: Python One-listers (Amazon Link).

В книге я дам вам тщательный обзор темы критических компьютерных наук, таких как машинное обучение, регулярное выражение, наука о данных, Numpy и Python Basics – все в одной линейке кода Python!

Получите книгу от Amazon!

Официальная книга Описание: Python One-Listers покажет читателям, как выполнить полезные задачи с одной строкой кода Python. Следуя краткому переподготовку Python, книга охватывает важные продвинутые темы, такие как нарезка, понимание списка, вещание, функции лямбда, алгоритмы, регулярные выражения, нейронные сети, логистические регрессии и др .. Каждая из 50 секций книг вводит проблему для решения, проходит читателя через навыки, необходимые для решения этой проблемы, затем предоставляет краткое однонаправленное решение Python с подробным объяснением.

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.