Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по Python
В Python, когда функция ничего не возвращает, она косвенным образом возвращает None
. В связи с появлением и бурным развитием машинного обучения в значении None
особенно важно разобраться. Исключение этих значений очень важно, например, в предварительной обработке данных.
Давайте разберемся, как удалить None из списка.
В Python для замены None используются разные методы, такие как DataFrame, fillna или Series. Ни одно ключевое слово в Python не объявляет нулевые объекты или переменные. В этом языке None относится к классу NoneType
.
Мы можем присвоить значение None
множеству переменных, и все они будут указывать на один и тот же объект. В отношении None интересен тот факт, что мы не можем рассматривать его как ложное значение. None
– это пустая строка или ноль.
Рассмотрим это на примерах. Чтобы объяснить, как Python удаляет нулевые значения из списка, мы используем компилятор Spyder.
Пример 1
В нашем первом примере для удаления None из списка мы используем простой подход.
Создаем новый список и добавляем в него элементы (как None, так и не-None), а затем перебираем список.
Давайте разберем, как это работает. Чтобы запустить данный код, первое, что вам нужно сделать, это открыть IDE, в нашем случае это Spyder. Для этого в строке поиска ПК с Windows введите Spyder и нажмите «Открыть». Используйте сочетание клавиш «Ctrl + Shift + N», чтобы создать новый файл, или воспользуйтесь меню «Файл». После создания нового файла можно приступить к написанию кода для удаления None из списка.
my_list = [2, None, 3, None, None, 8, None, 9] print ("My list is : " + str(my_list)) result = [] for val in my_list: if val != None : result.append(val) print ("List after removing None values : " + str(result))
Здесь мы сначала инициализируем наш список и добавляем в него элементы. Идущая следом функция print()
, выводит все элементы исходного списка.
Далее мы используем наш основной метод для удаления из списка значений None
. Чтобы определить, является ли элемент None, мы используем оператор if
. Если элемент нашего списка не равен None
, он сохраняется в новом списке result
при помощи метода append. В противном случае ничего не происходит.
В конце мы повторно используем функцию print()
, которая выводит в консоль значения из нового списка.
После написания кода перейдите в меню «Файл» и сохраните получившийся код с расширением .py
. В нашем случае файл называется RemoveNone.py, но вы можете выбрать любое другое имя.
Запустите код в вашей IDE. Если используете Spyder, нажмите клавишу F9.
Output: My list is : [2, None, 3, None, None, 8, None, 9] List after removing None values : [2, 3, 8, 9]
Как видите, в результате мы получили именно то, что хотели – список без элементов None
.
Пример 2
Большим минусом в использовании первого метода является то, что в коде слишком много строк, а их обработка занимает лишнее время.
Поэтому во втором примере мы сделаем то же самое, но в сжатом виде. Мы найдем значения, отличные от None
, и составим из них новый список.
Создайте в вашей IDE новый пустой файл или используйте тот же, что и для первого примера. Мы использовали тот же RemoveNone.py и просто внесли в него изменения.
my_list = [2, None, 3, None, None, 8, None, 9] print ("My list is : " + str(my_list)) result = [i for i in my_list if i] print ("List after removing None values : " + str(result))
Итак, для начала мы инициализируем и выводим на экран исходный список. Здесь все так же, как в предыдущем примере.
Но, в отличие от первого примера, здесь для исключения значений None мы применяем синтаксис генератора списков.
Функция print()
, идущая в конце, выводит на экран новый отфильтрованный список, в котором есть только значения, отличные от None
.
Сохраните файл и запустите код, чтобы проверить вывод.
Output: My list is : [2, None, 3, None, None, 8, None, 9] List after removing None values : [2, 3, 8, 9]
Мы получили желаемый результат. Он такой же, как в предыдущем примере, но данный способ является более эффективным с точки зрения временных затрат.
Заключение
Мы разобрали, как удалить None из списка в Python. Помимо двух рассмотренных нами методов, вы также можете использовать функцию filter()
.
Теперь удаление элементов None из вашего списка не будет для вас проблемой.
Успехов в написании кода!
Перевод статьи «Remove None from the List Python».