Как удалить None из списка в Python

Друзья, подписывайтесь на наш телеграм канал 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(), выводит все элементы исходного списка.

[python_ad_block]

Далее мы используем наш основной метод для удаления из списка значений 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».

Прокрутить вверх