Python: Хеширование большого количества больших чисел - PullRequest
0 голосов
/ 09 июля 2020

У меня большая проблема с данными. Моя программа python вычисляет числа от 1 до 2 ^ 32, и я хочу знать, вычислил ли я уже какое-то число.

Я мог бы отслеживать их как растровое изображение, используя половину гигабайта памяти. Но поскольку некоторые числа можно положить в сумку вместе с другими (примерно 100 чисел в сумке), мне было интересно, есть ли другой способ хранения моих значений, например хэши, но с меньшим потреблением памяти.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 09 июля 2020

Как я сказал в своем комментарии выше, вы можете использовать set, в котором хранятся все вычисленные числа. И когда вы вычисляете новое число, вы проверяете, есть ли оно уже в наборе.

Рассмотрим, что compute - это функция, которая вычисляет числа

computedNumbers = set()   # initialize set
for i in range(1, 2**32):    # for loop
    number = compute(i)
    if number in computedNumbers:
         print("Number", number, " is already computed!")
    else:
         computedNumbers.add(number)      # add the number to the set

Надеюсь, это вам поможет.

...