Сравните одну и ту же функцию с другой структурой записи

#python

Вопрос:

У меня есть функция, определенная следующим образом, и я не был уверен в структуре.

Данные-это список значений, которые я передаю, с максимальным количеством 5-6.

Значения PREV-это огромный список, который поступает из базы данных.

Случай 1 :

 for k in data:
    for m in prevValues:
       if k['name'] == m:
           return (True)
 

Случай 2 :

 for m in prevValues:
    for k in data:
        if k['name'] == m:
           return (True)
 

Каких изменений я могу ожидать? Производительность-это не цель, я все еще учусь писать лучший код.

Комментарии:

1. Вы вообще не должны использовать вложенные циклы, но проверьте if k['name'] in prevValues

2. Предполагая, что соответствующие значения являются хэшируемыми, вы хотите посмотреть, set(prevValues) amp; set(k['name'] for k in data) пусты они или нет.

3. @chepner, Это не приведет к короткому замыканию. Может быть значительно хуже, в зависимости от данных.

4. @wim Имеет ли это значение?

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