У меня довольно большой набор данных, который я использую в python, и использование списков слишком неэффективно для памяти.
Псевдокод подобен следующему:
thelist = []
for x in range(N):
value = function_call()
thelist.append(value)
more = separate_function_call()
thelist.append(more)
Я делаю стандартный подход инициализации пустого списка, а затем добавляю элементы в этот список, используя итерацию по вызовам функций, плюс вывод отдельного вызова функции.
Моя проблема в том, что списки слишком велики, чтобы уместиться в память.
Обычно, это было бы ясным случаем для генераторов, например
import sys
list_comp = [x ** 2 for x in range(5000) if x % 2 == 0]
gen_exp = (x ** 2 for x in range(5000) if x % 2 == 0)
sys.getsizeof(list_comp)
## 21040
sys.getsizeof(gen_exp)
## 112
Однако я не уверен, как это работает в приведенном выше примере, так как я не знаю, как хранить элементы в такой структуре данных, за исключением использования списка.
Какие есть альтернативы хранению предметов в таком огромном списке, как этот?