Инициализация пустого списка: квадратные скобки, конструктор list и другие подходы

Раздел: Основы Python -> Создание списков

Несколько способов создать пустой список

Какое решение самое эффективное для получения пустого списка?

Наиболее быстрый и лаконичный способ - использовать квадратные скобки []. Этот синтаксис является частью языка и не требует вызова функций.

empty_list = []

Python пустой list (создание пустого списка в python)

print(empty_list)  # []
print(type(empty_list))  # <class 'list'>

Python list range (создание списка с помощью range в python)

Пояснение:

Литерал [] сразу создаёт объект списка без элементов. Его можно применять в любом месте, где нужен пустой список: как начальное значение, для последующего добавления, в качестве значения по умолчанию в функциях.

Возможные проблемы и ошибки:

  • Забыть скобки: empty = (синтаксическая ошибка).
  • Путаница с {} (словарь) или () (кортеж).

Как создать пустой список через конструктор list()?

Конструктор list() без аргументов возвращает пустой список. Этот вариант явно показывает намерение создать список, но немного медленнее из-за вызова функции.

empty_list = list()

List 1 1 2 2 python (генерация списка с повторяющимися элементами)

print(empty_list)  # []
print(type(empty_list))  # <class 'list'>

Python array 1 (массив с единицами в python)

Цель использования:

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

Типичные ошибки:

  • Передача аргумента: list('abc') создаст список символов, а не пустой.
  • Забыть скобки: empty = list - это не вызов, а ссылка на класс.

Как получить пустой список с помощью умножения на ноль?

Выражение [None] * 0 или [0] * 0 даёт пустой список. Оператор умножения повторяет элементы указанное число раз; при нуле повторений получается пустой список.

empty_list = [None] * 0
print(empty_list)  # []
empty_list2 = [1, 2] * 0
print(empty_list2)  # []

Когда это может пригодиться?

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

Проблемы:

  • Излишне для простого пустого списка.
  • Если забыть ноль: [None] * 1 даст список с одним элементом.
  • Неочевидный код для читающего.

Как создать пустой список с помощью среза?

Срез существующего списка или пустого литерала: [][:] возвращает новый пустой список. Это копия части списка, но если исходный пуст, то результатом будет пустой список.

empty_list = [][:]
print(empty_list)  # []
# Работает и с непустым списком:
empty_list2 = [1, 2, 3][0:0]  # тоже []
print(empty_list2)  # []

Цель:

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

Ошибки:

  • Путаница с [:] для копирования всего списка.
  • Избыточность: [] уже пустой, а срез добавляет лишнюю операцию.

Дополнительные примеры и варианты использования пустого списка

Сравнение производительности разных способов

На практике [] быстрее list(). Вот замер времени:

Пример
import timeit
print(timeit.timeit('[]', number=10_000_000))     # ~0.3 сек
print(timeit.timeit('list()', number=10_000_000)) # ~0.6 сек
0.312
0.614

Разница незначительна для большинства приложений, но в критичных циклах лучше использовать [].

Создание пустого списка для последующего наполнения

Часто пустой список инициализируют перед циклом:

Пример
results = []
for i in range(5):
    results.append(i * 2)
print(results)
[0, 2, 4, 6, 8]

Пустой список как значение по умолчанию (осторожно с изменяемыми объектами)

Использование изменяемого значения по умолчанию может привести к неожиданному поведению:

Пример
def add_item(item, lst=[]):
    lst.append(item)
    return lst

print(add_item(1))  # [1]
print(add_item(2))  # [1, 2]  (тот же список!)
[1]
[1, 2]

Лучше использовать None и создавать новый список внутри:

Пример
def add_item(item, lst=None):
    if lst is None:
        lst = []
    lst.append(item)
    return lst

Вложенные пустые списки

Создание списка, содержащего несколько пустых списков:

Пример
nested = [[] for _ in range(3)]
print(nested)  # [[], [], []]
nested[0].append('a')
print(nested)  # [['a'], [], []]
[[], [], []]
[['a'], [], []]

Обратите внимание: [[]]*3 создаст три ссылки на один и тот же список.

Пустой список в функциональном программировании

Использование пустого списка как начального аккумулятора в reduce:

Пример
from functools import reduce
result = reduce(lambda acc, x: acc + [x], [1,2,3], [])
print(result)
[1, 2, 3]

Генерация пустых списков с помощью list comprehension с условием

Иногда нужно создать пустой список, когда условие не выполняется:

Пример
numbers = [1, 2, 3, 4, 5]
empty = [x for x in numbers if x > 10]
print(empty)  # []
[]

Такой подход позволяет получить пустой список без явного литерала, но обычно [] понятнее.

Создание пустого списка в Python - comments

En
Python пустой list (python)