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