Мне присваивается список l
, и я хочу выполнить назначение:
l[index] = val
Но может быть случай, когда список слишком мал.
Итак, я хочу, чтобы у меня было место для нового значения.
Иногда мне нужно заполнить новое пространство пустыми строками ''
, а иногда и с другими объектами (например, пустые списки []
, False
или None
).
Для этой задачи я использую следующую процедуру:
def ResizeList(l, size, fill_with=None):
l += [fill_with]*(size-len(l))
(примечание: оно работает, даже если size-len(l)<=0
)
(обратите внимание: поскольку меня интересует резервирование пространства, я намеренно НЕ усекаю его в более короткий список)
Вроде:
ResizeList(l, index+1)
l[index] = val
(При заполнении другим объектом это выглядит как: ResizeList(l, index+1, [])
)
Есть ли еще питонические способы сделать это? Есть ли встроенные или библиотечные функции для этого?
Я использую в основном Python-3.x, но ноу-хау о Python-2x полезно и приветствуется.
Уточнение: Пожалуйста, не говорите мне о dict
, потому что мне нужно list
Для тех, кто хотел бы, чтобы я был более конкретным:
В заявлении о проблеме указывается его тип list
. Использование dict
здесь не является вариантом или решением. Есть причины для этого, особенно связанные с доменом (я делаю прототип эксперимента, который должен показать некоторое асимптотическое поведение, не - как, вероятно, вы привыкли - прототип программы Если это будет "просто прототипом программы", то я согласен с использованием dict и других комментариев). У меня есть следующие предположения:
- У меня много списков (нужно заботиться о производительности и производительности)
- из-за рабочего процесса и необходимости прототипа, я не могу называть расшифрованное C/С++ расширение
- при вычислении окончательный размер списка неизвестен
- мы знаем, что в списке и списки будут плотными Ячейки списка
- записываются и перезаписываются в неизвестном порядке
Это всего лишь несколько причин, почему я подчеркнул, что мне нужен list
, а не dict
.
Для тех, кто интересуется более подробной информацией или кто хотел бы обсудить dict
, проверку, как мы обсуждаем в комментариях ЗДЕСЬ