Как удалить все нули из списка python
Перейти к содержимому

Как удалить все нули из списка python

  • автор:

How to Use Python to Remove Zeros from List

To remove zeros from a list using Python, the easiest way is to use list comprehension.

You can also use the Python filter() function.

When working with lists of numbers, it can be valuable to be able to easily filter and remove unwanted values from your list.

One such situation where you may want to remove values from a list is if you have a lot of zeros in your list.

We can easily remove all zeros from a list using Python with list comprehension. List comprehension offers a shorter syntax when you want to create a new list based on the values of an existing list.

Below is the code which will allow you to remove all zeros from a list using list comprehension in Python.

Removing Zeros from List with Python filter() Function

The Python filter() function is a built-in function that allows you to process an iterable and extract items that satisfy a given condition.

We can use the Python filter() function to extract all the items in a list of numbers which do not equal 0 and remove the zeros from a list.

Below is some example code showing you how to remove zeros from a list using the filter() function.

Removing Any Value from List Using Python

In a very similar way, we can remove any value from a list using list comprehension.

For example, if we instead wanted to remove all of the ones from a list, we could do that easily with list comprehension in Python by adjusting the code above.

Another example would be if we have a list of strings, and we want to remove the word “whoa”, we can do that with list comprehension in Python.

Hopefully this article has been useful for you to learn how to remove zeros from a list in Python.

Other Articles You'll Also Like:

  • 1. Get All Substrings of a String in Python
  • 2. Create List of Odd Numbers in Range with Python
  • 3. pandas to_pickle – Write DataFrame to Pickle File
  • 4. pandas Standard Deviation – Using std() to Find Standard Deviation
  • 5. Python Replace Space with Underscore Using String replace() Function
  • 6. pandas ceil – Find the Ceiling of a Column Using Numpy ceil
  • 7. pandas sum – Get Sum of Series or DataFrame Columns
  • 8. Using Python to Capitalize Every Other Letter of String
  • 9. Concatenate Multiple Files Together in Python
  • 10. Repeat String with * Operator in Python

About The Programming Expert

The Programming Expert is a compilation of a programmer’s findings in the world of software development, website creation, and automation of processes.

Programming allows us to create amazing applications which make our work more efficient, repeatable and accurate.

At the end of the day, we want to be able to just push a button and let the code do it’s magic.

Как фильтровать списки в Python. Функция Filter.

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

Это можно сделать с помощью метода анализа списка таким образом: [ x for x in l if f(x) ], где f – функция, которая решает с помощью булева числа, должен ли элемент списка l быть в отфильтрованном списке. Вы также можете использовать функцию фильтрации так: list(filter(f, l)).

Но, как всегда, давайте будем разбираться по порядку.

Как фильтровать список с помощью метода анализа списка

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

Первое, что приходит на ум в этом случае, – сделать цикл для перебора всех элементов исходного списка.

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

Если число четное, мы добавляем его в другой список назначения, который изначально пустой и который будет формировать наш отфильтрованный список. Если число не четное (т.е. не удовлетворяет условию), мы его игнорируем.

В конце цикла мы получим список, являющийся отфильтрованным списком, который нам был нужен.

Давайте рассмотрим пример:

Этот код выведет следующий результат:

Как видите, код довольно прост и понятен, но давайте обсудим несколько моментов:

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

Давайте рассмотрим способы решения этих вопросов.

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

Как видите, код довольно прост и понятен, но давайте обсудим несколько моментов:

Нам нужно заранее создать отфильтрованный список, чтобы мы могли добавлять элементы по мере необходимости.
Нам нужно включить в цикл условие. В данном случае условие простое, но оно могло бы быть более сложным, что сделало бы код менее наглядным и более трудным для чтения и понимания.
Код относительно длинный для очень обычной операции и, в принципе, должен быть проще.
Давайте рассмотрим способы решения этих вопросов. Если вы не совсем понимаете условное условие в предыдущем примере, где, очевидно, нет сравнения, вы можете взглянуть на эту статью об условных выражениях в Python, где я объясняю, среди прочего, почему вы можете работать с целым числом (которое является результатом элемента % 2) так, как если бы это было булево значение, то есть True или False.

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

Для примера можно представить, что нам нужны те элементы списка, которые являются четными, или те, которые кратны 3 или кратны 11. Таким образом, условие будет выглядеть следующим образом: не элемент % 2 или не элемент % 3 или не элемент % 11.

Как вы можете себе представить, это сделает цикл не очень красивым:

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

Мы можем сделать это, поместив его в функцию, тем самым получив более модульный и организованный код, который легче понять и поддерживать. Назовем эту функцию condition:

Хорошо, теперь у нас более читабельный код, и мы разделили обязанности (проверка с одной стороны и построение отфильтрованного списка с другой).

Однако можно сказать, что этот код не очень похож на Python. Воспользуемся сжатием списка и решим пункты 1 и 3 выше, т.е. нам не нужно предварительно создавать пустой список, и тем самым мы еще больше упростим код.

Сжатие списка позволяет нам формировать список “на лету”.

В этом случае пример будет выглядеть следующим образом:

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

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

Рассмотрим пример, когда, начиная с кортежа с различными элементами, я хочу сохранить только пары без повторений, поэтому вместо списка я создам набор (наборы не допускают повторений).

Примечание: в исходном кортеже у меня есть несколько повторяющихся чисел и несколько нечетных чисел. Конечный результат должен содержать только четные числа и не иметь повторений. Если вы выполните приведенный выше код, то получите следующее:

Давайте рассмотрим другой, еще лучший способ фильтрации, который заключается в использовании собственной функцией filter в Python.

Как отфильтровать список с помощью функции filter

Функция filter возвращает итерируемый объект со всеми значениями коллекции данных, которые удовлетворяют определенному условию. Он должен быть вызван с двумя параметрами: функцией, определяющей, удовлетворяет ли данный элемент условию, и коллекцией данных для фильтрации: filter(function, data).

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

Обратите внимание, что вызов функции filter возвращает объект, а не непосредственно список или последовательность, к которым можно получить доступ по индексам. Этот объект, относящийся к классу filter, является итерируемым объектом. Это означает, что вы можете последовательно обращаться к его элементам с помощью функции next. Вы также можете пройтись по нему с помощью цикла for.

Интересно то, что если вы хотите получить список, кортеж или набор из объекта фильтра, вы можете сделать это, вызвав функции list, tuple или set, соответственно, на результате фильтрации.

Функция filter получает два параметра:

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

Давайте посмотрим, как получить отфильтрованный список из списка, содержащего только элементы, кратные 2, 3 или 11:

Результат будет выглядеть следующим образом:

Просто, не так ли?

Если мы оказались в ситуации, когда условие для фильтра простое, нам не нужно создавать отдельную функцию условия, и мы можем использовать лямбда-выражения.

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

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

Это возможно, поскольку функции являются элементами первого порядка в Python (что позволяет вам присваивать их переменной, как я уже говорил, или предоставлять их в качестве аргумента другим функциям):

Результат будет следующим:

С помощью лямбда-выражения мы можем фильтровать список без необходимости создавать функцию условия фильтрации.

Кроме того, мы можем напрямую передать лямбда-выражение в функцию filter, чтобы получить очень компактный код:

На этот раз мы сгенерировали кортеж, поэтому результат на экране будет выглядеть следующим образом:

Вы видите, насколько удобной, простой и быстрой может быть фильтрация с помощью функции filter. Но… это еще не все!

Как отфильтровать нулевые элементы из списка

Можно дать функции filter значение None. Таким образом, мы получим отфильтрованный список, в котором будут исключены те элементы, которые в Python оцениваются как False (например, False, 0, ” или []).

Так, например, если мы хотим удалить все нули из списка целых чисел, мы просто должны сделать следующее:

Получаем следующий результат:

Однако, как я уже сказал, таким образом мы можем удалить из отфильтрованного списка любой элемент, который оценивается как False:

Это даст нам следующий результат:

Как получить элементы, удаленные с помощью фильтрации

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

Функция filter не позволяет сделать это напрямую, т.е. нужно будет создать обратное условие вручную. Но Python уже учитывает это и предоставляет нам функцию filterfalse, находящуюся в модуле itertools.

Итак, если мы хотим отфильтровать список, чтобы сохранить все элементы, кратные 2, 3 или 11, и, кроме того, нам нужен другой список с исключенными элементами, то есть теми, которые не кратны 2, 3 или 11, мы можем сделать следующее:

Таким удобным способом мы получаем отдельно элементы, которые выполняют условие, от тех, которые не выполняют:

Как отфильтровать список объектов

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

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

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

Давайте посмотрим на код:

Чтобы вычислить периметр по сторонам треугольника, просто суммируем их. Чтобы вычислить площадь треугольника по величине его сторон, можно применить формулу Герона.

Теперь мы можем легко создать треугольники следующим образом:

Это даст нам следующий результат:

С этим все понятно, давайте рассмотрим пример, в котором мы хотим отфильтровать список объектов класса Triangle.

Предположим, что мы хотим отфильтровать список треугольников, чтобы оставить только те, у которых максимальная площадь равна 10, а минимальный периметр – 15.

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

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

Я выбрал способ отображения треугольников на экране – использовать собственную функцию Python enumerate, которая позволяет получить индекс каждого треугольника в списке, чтобы отобразить и его.

Вывод, сгенерированный приведенным выше кодом, выглядит следующим образом, где видно, что действительно, отфильтрованными треугольниками являются те, которые удовлетворяют условиям, заданным для максимальной площади 10 и минимального периметра 15:

25. Работаем со списками в Python (удалять лучше с конца)

Продолжаем работать со списками.
Разберем задания, которые (должны) были вызвать у вас трудности. Напомню, что в данный момент мы работаем с числовыми списками.
Для создания списка, заполненного случайными значениями, удобно использовать такой прием:

А теперь попробуем удалить все нули. Вариант с использованием count и remove мы рассматривать не будем, надеюсь с ним все понятно. Предположим, что этих функций нет, или мы не можем их использовать. Чтобы удалить все нули нужно, во-первых, перебирать список по номерам, а не по значениям, т.е. использовать цикл вида:

Сравним с циклом, который перебирает по значениям:

Второй способ короче, элегантнее и понятнее. Но он не всегда может быть использован. Есть особенности, с которыми мы разберемся чуть позже, пока вам придется поверить, что оба варианта имею право на существование и понимать и использовать нужно оба варианта перебора. Если вам нужна позиция (номер) элемента, если вам нужно сравнивать с соседними, то подходит только перебор по номерам.
Это было «во-первых». «Во-вторых» видим проблему:

Такой вариант приводит к возникновению ошибки out of range. Запомните и ошибку и причину ее вызывшую. Это выход за пределы списка. Разберем подробнее, что происходит при выполнении: for i in range(12)?
Создается последовательность (0,1,2,3,4,5,6,7,8,9,10,11) и i начинает брать значения из этой последовательности по-очереди. Никакого изменения этой последовательности не предусмотрено! Т.е. после удаления элементов последовательность номеров оказывается длинее, чем последовательность элементов!
И это неизбежно приводит к тому, что вы пытаетесь обратится к элементу, которого не существует.
Попробуем использовать цикл while:

Теперь выхода за пределы списка не будет. Правда нули удаляются не все, но от одной ошибки мы уже избавились. Посмотрим, почему нули удаляются не все, допустим, у вас есть список:
1 0 0 2 3 4
Тогда программа отработает так:

После удаления нуля, следующий элемент «подтягивается» на это место. Нельзя уходить, надо снова проверять.

Теперь будет работать нормально, потому что переход на следующую позицию мы делаем только тогда, когда не удаляли. Если удаляли, то проверяем, что там «приползло».
Это хороший способ, но есть лучше!
Попробуйте пройти циклом for c конца!

Разве это не прекрасно?
Длина списка изменяется, элементы перемещаются, но это уже не наша проблема!

Есть способ и еще проще:

Или его явная разновидность:

У всех способов есть свои особенности. Поэтому проще всего знать и понимать все.

А еще попробуйте вернуться к заданиям двух предыдущих уроков и выполнить их.
На следующем уроке мы еще поработаем с числовым списком, чтобы через урок вернуться к «кружочкам». Нам предстоит искать самые большие, самые маленькие и работать с соседями (элементов).

Удачи, жду вопросов в комментариях (в «обычных», т.к. уведомление приходит только о них)

How to remove none from list python (5 Ways)

remove none from list Python

In this article, we are solving the problem of how to remove none from list python. This type of problem in Python can be solved in many ways, we will be looking in 5 ways to remove none from list in python.

Table of Contents

What is none in python?

None is a keyword in Python used to define a null value or no value at all. It is not the same as an empty string or zero, or false value, it is the data type of the class NoneType in Python.

We can declare none variable as –

Output:-

Why should we remove none from list Python?

When analyzing a large set of data, it is likely that we come across with none values or missing values. To make sure data is clean and tidy for data analysis and data representation removing null values from list data in python is important.

Since null values affect the performance and accuracy of machine learning algorithms it is necessary to handle these none values from data sets before applying the machine learning algorithm. Removing such unwanted null values, and corrupting data before processing the algorithm is called data preprocessing.

Also Read:

  • How to remove special characters from string in 4 Ways
  • 3 Ways to Convert List to Set

How to remove none from list Python

The 5 Ways to get rid of none in Python are as follows-

Method 1- Remove none from list using filter() method

The easiest way to remove none from list in Python is by using the list filter() method. The list filter() method takes two parameters as function and iterator. To remove none values from the list we provide none as the function to filter() method and the list which contains none values.

None – To eliminate none values we provide none as the function in the filter method

Iterator – An iterator like list, set, or tuple.

Python Code:

Output:-

Method 2- Naive Method

We can also remove none from list in python using a for loop and check whether the values are none if yes ignore it and the rest of the values can be appended to another list.

Python Code:

Output:-

Method 3- Using For loop + list remove()

To remove none from list python we will iterate over the list elements and compare each element with none if we find any none element we will remove none element from the list using the python list remove() method.

The list remove() method takes a single lament as an argument and removes that element from the list.

Python Code:

Output:-

Method 4- Using List Comprehension

To remove none values from list we also use list comprehension. In Python, list comprehension is a way to create a new list from existing other iterables like lists, sets, and tuples. We can also say that list comprehension is a shorter version of for loop. To know about list comprehension you can visit this.

Python Code:

Output:-

Method 5- Using Filter() + lambda function

In python, the lambda function is an anonymous function that is without any name. It takes any number of arguments but can only perform one expression.

As we discuss above filter() method takes a function as input, and since lambda is also one kind of method in python, hence we provide a lambda function and an iterator as input arguments to the filter method.

Python code:

Output:-

Conclusion

Hence we have seen how to remove none from list python in 5 different ways. We can remove none from list python by using filter(), naive method, for loop + remove(), using list comprehension, and filter() + lambda function.

I am Passionate Computer Engineer. Writing articles about programming problems and concepts allows me to follow my passion for programming and helping others.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *