У меня есть список, содержащий произвольные объекты одинакового типа:
items = ['a', 'b', 'c', 'x', 'y', 'z']
Я сканирую список и отмечаю объекты, помещая их в контейнер на основе неважного условия. Допустим, это странные индексы:
for i in range(len(items)):
if i % 2:
items[i] = (items[i],)
Второй проход отфильтрует список, чтобы развернуть помеченные элементы и удалить все остальное:
items = [x[0] for x in items if isinstance(x, tuple)]
Этот код является в основном функциональным. Однако для очень больших массивов пометка увеличивает использование памяти и, естественно, требует времени.
Какой контейнер наиболее эффективен для чего-то подобного? Я использую кортеж, потому что он имеет наименьшую площадь из всех классов контейнеров, на которые я смотрел. Есть ли лучший способ обернуть одну ссылку?