# Как проверить, пуст ли список в Python

В этом руководстве **вы научитесь использовать Python для проверки пустоты списка**. Списки в Python - одни из самых универсальных и широко используемых контейнерных объектов. Поскольку списки в Python можно итерировать, часто первым делом стоит проверить, пуст ли список, прежде чем пытаться итерировать по нему. Без этого ваша программа может столкнуться с проблемами и аварийно завершить работу.

К концу этого урока вы узнаете:

* Как использовать Python, чтобы проверить, пуст ли список
* Почему вы хотите проверить, пуст ли список Python
* Как проверить, пуст ли список списков в Python
* Как проверить, пуст ли массив NumPy

Оглавление

* [Краткий обзор списков Python](#kratkii-obzor-spiskov-python)
* [Проверка того, пуст ли список Python, используя if](#proverka-togo-pust-li-spisok-python-ispolzuya-if)
* [Проверка того, пуст ли список Python с помощью bool](#proverka-togo-pust-li-spisok-python-s-pomoshyu-bool)
* П[роверка того, пуст ли список Python, используя равенство](#proverka-togo-pust-li-spisok-python-ispolzuya-ravenstvo)
* [Проверка того, пуст ли список Python, используя его длину](#proverka-togo-pust-li-spisok-python-ispolzuya-ego-dlinu)
* [Проверка того, является ли список списков Python пустым](#proverka-togo-yavlyaetsya-li-spisok-spiskov-python-pustym)
* [Проверка того, является ли массив NumPy пустым](#proverka-togo-yavlyaetsya-li-massiv-numpy-pustym)
* [Часто задаваемые вопросы](#chasto-zadavaemye-voprosy)
* [Заключение](#conclusion)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Краткий обзор списков Python

Прежде чем мы начнем изучать, как проверить, пуст ли список в Python, давайте быстро рассмотрим, что такое списки в Python и как их можно использовать. [Список в Python](https://datagy.io/python-list/) - это гетерогенный, изменяемый и итерируемый объект-контейнер в Python.

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

Давайте рассмотрим простой список и как мы можем перебирать элементы списка:

```python
# Iterating Over a Simple List
list1 = [1,2,3]
for item in list1:
    print(item)

# Returns:
# 1
# 2
# 3
```

Мы также можем создать пустой список, используя любой из нижеприведенных методов:

```python
# Creating Empty Lists in Python
empty1 = []
empty2 = list()
```

При попытке итерации по этим спискам ничего не произойдет. Это может привести к некоторым неожиданным результатам. Из-за этого проверка на то, пустой ли список, может быть полезным инструментом для обеспечения ожидаемого выполнения вашей программы.

### Проверка того, пуст ли список Python, используя if

Документ `PEP 8` для Python представляет собой руководство по стилю кодирования на Python. Поэтому он содержит конвенции для написания кода. Следование этим конвенциям может привести к коду, который лучше понимается другими и использует язык так, как это было задумано.

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

```python
# Using in To Check if a List is Empty
seq = []
if not seq:
   print('List is empty')
if seq:
   print('List is not empty')
```

Давайте разберемся, как это работает: **Python предполагает, что пустой список, как и другие пустые контейнеры, представлен `False`**. На самом деле мы пишем `if not False`

Помните, PEP-8 предлагает соглашения, чтобы ваш код был более понятен другим программистам. Вам не *обязательно* следовать этому соглашению, и изучение других способов его выполнения важно для того, чтобы лучше понимать код других людей.

### Проверка того, пуст ли список Python с помощью bool

Одним из способов проверки на пустоту списка в Python часто является использование функции `bool()`. Функция `bool()` в Python проверяет истинность элемента и возвращает либо `True`, либо `False`. В Python пустые объекты считаются `False`.

Давайте посмотрим, как мы можем использовать функцию `bool()`, чтобы проверить, пуст ли список:

```python
# Using bool() to Check If a List is Empty
empty_list = []

if bool(empty_list) == False:
    print('List is empty')
else:
    print('List is not empty')

# Returns: List is empty
```

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

### Проверка того, пуст ли список Python, используя равенство

Ещё один распространённый способ проверить, пуст ли список в Python, - это сравнить ваш список с пустым списком с использованием оператора равенства `==`. Этот метод довольно явный и, возможно, дружелюбный для новичков, так как он делает свои намерения очень очевидными.

Одно из преимуществ этого подхода заключается в том, что он позволяет ясно понять, что [вы проверяете, является ли объект списком, а не чем-то другим](https://datagy.io/python-type-isinstance/). Давайте посмотрим, как мы можем использовать Python для этого:

```python
# Using Equality to Check if a List is Empty
empty_list = []

if empty_list == []:
    print('List is empty')
else:
    print('List is not empty')

# Returns: List is empty
```

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

### Проверка того, пуст ли список Python, используя его длину

В этом разделе вы узнаете, как проверить, пуст ли список в Python, проверив его длину. Интуитивно пустой список не содержит элементов. Мы можем использовать эту информацию, чтобы определить, есть ли в списке какие-либо элементы.

```python
# Using Length to Check if a List is Empty
empty_list = []

if len(empty_list) == 0:
    print('List is empty')
else:
    print('List is not empty')

# Returns: List is empty
```

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

### Проверка того, является ли список списков Python пустым

Работа со списками списков добавляет дополнительный уровень сложности, но это нечто, что мы можем интуитивно решить с помощью Python! Функция `any()` в Python проверяет, является ли хотя бы один элемент в контейнере `True`, и вернет `False`, если это не так. Теперь, когда мы знаем, что список в Python считается `False`, мы можем использовать это в своих интересах.

```python
# Using any() to Check if a List of Lists is Empty
empty_list_of_lists = [[], [], []]

if not any(empty_list_of_lists):
    print('List is empty')
else:
    print('List is not empty')

# Returns: List is empty
```

В приведенном выше коде мы используем функцию `any()`, чтобы проверить, считается ли хоть один элемент `True`. Поскольку это не так, скрипт правильно сообщает нам, что список списков пуст.

### Проверка того, является ли массив NumPy пустым

Массивы NumPy похожи на списки в Python, хотя это довольно упрощённое сравнение. Мы можем проверить, пуст ли массив, используя его атрибут `.size`, который возвращает размер данного массива. Давайте посмотрим, как мы можем это сделать:

```python
# Using NumPy to Check if an Array is Empty
import numpy as np

arr = np.array([])

if arr.size:
    print('Array is not empty')
else:
    print('Array is empty')
```

### Часто задаваемые вопросы

<details>

<summary>Как лучше всего проверить, пуст ли список Python?</summary>

Лучший способ, согласно PEP-8, - использовать ключевое слово `if`. **Написав `if a_list:`, вы можете проверить, пустой список или нет**, поскольку пустой список вернёт`False`

</details>

<details>

<summary>Пустой список Python равен False?</summary>

В Python пустой список оценивается как `False`. Это означает, что при оценке `bool([])`, будет возвращено значение

</details>

### Conclusion

Работа со списками в Python является важным навыком для разработчика на Python любого уровня. Умение проверять, пуст ли список, – это простая, но важная задача, чтобы обеспечить желаемое функционирование вашей программы. В этом учебнике вы научились проверять, пуст ли список, используя истинность, длину и равенство. Вы также узнали, как проверить, пусты ли списки списков и являются ли массивы NumPy пустыми.

### Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с обучающими материалами ниже:

* Python: проверьте, пуст ли словарь (5 способов!)
* Как проверить, пуста ли строка в Python
* Как перебирать (цикл) список в Python
* [Python PEP-8](https://peps.python.org/pep-0008/)
