Python
Как объявить список определенной длины в Python?
Нужно объявить список с определенной длиной, чтобы потом его неким образом заполнять. Как это сделать? В C++ например int a[255]; - массив 255 целых чисел.
список не может быть определенной дллины т. к. его можно пополнять
Вроде бы так можно
a=[0]*255
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 = [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 разных словарей.
a = [None] * 255
Хотя мне больше нравится конструкция вида a = [None for _ in range(255)]
Разница между ними проявляется, если у нас ссылочный тип данных. Первая конструкция создаст 255 копий одной и той же ссылки (на один и тот же объект), а вторая - 255 разных объектов. Например, [{}] * 255 - это 255 ссылок на один и тот же словарь, а [{} for _ in range(255)] - это 255 разных словарей.
Похожие вопросы
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- Проблема с программой типа "список" в Python
- Дан список чисел. Нужно посчитать количество их "пар" (т.е. "1 1 1 1 1" = 10, "1 2 3 2 3" = 2 и т.д.) (Python)
- Работа со списками Python. В одну строку.
- Задача со списками, Python
- Как в python получить элемент из списка по нескольким значениям
- Заполнить двухмерный список случайными числами python
- Python. Использование стандартных методов работы со списками(для чайников)
- Окончил курсы на степике по Python что делать дальше?
- Python программирование. Помогите написать программу.