Как вырастить список, чтобы он соответствовал заданной емкости в Python
Я новичок в Python. У меня есть ряд объектов, которые нужно вставлять по определенным индексам списка, но они выходят из строя, поэтому я не могу просто добавить их. Как я могу вырастить список, когда это необходимо, чтобы избежать IndexErrors?
def set(index, item): if len(nodes) <= index: # Grow list to index+1 nodes[index] = item
Я знаю, что вы можете создать список с начальной пропускной способностью через nodes = (index+1) * [None]
но каков обычный способ его создания? Следующие функции не кажутся эффективными:
for _ in xrange(len(nodes), index+1): nodes.append(None)
Кроме того, я полагаю, что в стандартной библиотеке есть класс, который я должен использовать вместо встроенных списков?
- Форматировать строку со всеми элементами списка
- Как найти все вхождения элемента в списке?
- Python – найти те же значения в списке и группе вместе новый список
- Удалите четное / нечетное число из нечетного / четного списка Python.
- Python удаляет подсписку в списке, если конкретный элемент внутри этого подсети
Это лучший способ сделать это.
>>> lst.extend([None]*additional_size)
Возможно, что-то вроде:
lst += [None] * additional_size
(вы не должны вызывать список переменных списка, так как это также имя конструктора списка).
похоже, я сначала не понял ваш вопрос. Если вы спрашиваете, как расширить длину списка, чтобы вы могли вставить что-то с индексом, большим, чем текущая длина списка , то lst.extend([None]*(new_size - len(lst))
, вероятно, будет Конечно, если вы заранее знаете, какой максимальный индекс вам понадобится, было бы целесообразно создать список заранее и заполнить его None
.
Для справки я оставляю исходный текст: вставить что-то в середине существующего списка, обычный способ – не беспокоиться о том, чтобы развернуть список самостоятельно. Объекты списка имеют метод insert
, который позволит вам вставить объект в любую точку списка. Поэтому вместо вашей функции set
просто используйте
lst.insert(item, index)
или вы могли бы сделать
lst[index:index] = item
что делает то же самое. Python позаботится об изменении размера списка.
В стандартной библиотеке не обязательно использовать какой-либо класс, который вы должны использовать вместо list
, особенно если вам нужна такая сортировка с произвольным доступом. Однако в модуле collections
есть несколько классов, о которых вы должны знать, поскольку они могут быть полезны для других ситуаций (например, если вы всегда добавляете один конец списка, и заранее не знаете, сколько предметы, которые вам нужны, deque
будет подходящим).
- Python: Dedup список, основанный на определенных критериях
- Перечислить значения словарных значений
- python – вставлять значения из одного списка в другой в заранее определенных точках
- Добавление в 2D-списки в Python
- Убедитесь, что все значения списка меньше определенного числа, если они не установлены на этот номер
- Точка безубыточности оптимизации: многократно повторяйте набор или конвертируйте в список в первую очередь?
- Подсчет аббедерских слов в списке: Python
- обратный к списку python
- Лучший способ удалить элементы из списка