Более эффективный подход к вложенным циклам в python - PullRequest
0 голосов
/ 31 марта 2019

У меня есть вложенный цикл, который я пытаюсь сделать более эффективным.
Мне нужно найти способ ускорить выполнение - я думаю, что проблема заключается в том, что мне нужно хешировать оба значения, чтобы выполнить сравнение, чтобы найти правильное значение.

Есть ли более простой способ сделать это?

Я пробовал разные способы объединения значений - присваивание значений в разных точках, но я не вижу реальной экономии времени.

    for val1 in text_list:
        for val2 in text_list:
            hashed_text = hashlib.sha256(val1.encode() + val2.encode()).hexdigest()
            if hashed_text == expected_value:
                return val1, val2

Входной файл 1К + записей и занимает ~ 1 секунду. Мне нужно найти способ сократить время выполнения.

1 Ответ

0 голосов
/ 31 марта 2019

если бы вы добавили несколько примеров, я мог бы протестировать и сравнить это.без этого вот что-то непроверенное, что может помочь: это уменьшает вычисление хеша val1:

for val1 in text_list:
    h = hashlib.sha256(val1.encode())
    for val2 in text_list:
        h2 = h.copy()
        h2.update(val2.encode())
        hashed_text = h2.hexdigest()
        if hashed_text == expected_value:
            return val1, val2

, но, как я сказал, я не могу проверить, помогает ли это в вашем случае ...

...