Более эффективный подход к вложенным циклам в python

#python #python-3.x #nested-loops

#python #python-3.x #вложенные циклы

Вопрос:

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

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

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

     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:

если бы вы добавили несколько примеров, я мог бы протестировать и сравнить это. без этого вот кое-что непроверенное, что может помочь: это уменьшает вычисление хэша 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
  

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