Python

Как объявить список определенной длины в Python?

Нужно объявить список с определенной длиной, чтобы потом его неким образом заполнять. Как это сделать? В C++ например int a[255]; - массив 255 целых чисел.
список не может быть определенной дллины т. к. его можно пополнять
Gennadiy Kostylyov
Gennadiy Kostylyov
1 377
Лучший ответ
Вроде бы так можно
a=[0]*255
"список не может быть определенной дллины т. к. его можно пополнять"

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

a = [0]*255

a[0] = 3
a[7] = 'asdf'
a[4] = []
a[2] = (1, 3, 5)

print(a)
Отработает без проблем.
Но если попытаться
a[333] = 2
или даже
a[255] = 3
То выдаст ошибку
IndexError: list assignment index out of range
Так как наибольший индекс 254.

Никто не мешает добавлять-убавлять с помощью append(), pop(), delete().
Но присваивать по индексу можно только тем индексам, которые уже есть в данный момент.

Вот только в отличии от C++, в питоне нельзя создать список содержащий неинициализированные значения (мусор).
Да, мусор создать нельзя, но можно сделать так:
a = [None] * 255

Хотя мне больше нравится конструкция вида a = [None for _ in range(255)]

Разница между ними проявляется, если у нас ссылочный тип данных. Первая конструкция создаст 255 копий одной и той же ссылки (на один и тот же объект), а вторая - 255 разных объектов. Например, [{}] * 255 - это 255 ссылок на один и тот же словарь, а [{} for _ in range(255)] - это 255 разных словарей.
Насир Гурбанов
Насир Гурбанов
15 444