Мне нужна структура данных, которая позволяет добавлять элементы и удалять их случайным образом за O(1)
время.
Причина этого в том, что мне нужно перетасовать данные из генератора, но я не могу загрузить всев память одновременно из-за размера.
Это пример использования, который автоматически перетасовывает порядок результатов, генерируемых выражением генератора, без загрузки всего в память:
def generator_shuffler(generator)
a = magical_data_structure_described_above
for i in generator:
a.add(i)
if len(a) > 10: yield a.poprandom()
Сначала я попробовал питон set()
, однако отсюда: Set.pop () не является случайным? , похоже, что set()
на самом деле не удаляет элементы в произвольном порядке.Как бы я реализовал структуру данных с использованием выше?