Some HAT...

= Анабар.ru => Python-форумы => Язык программирования Python => сообщение 1029
| Вход | Регистрация
нет
фото
Автор:  emin
Дата:  11-Dec-2006 20:58 (gmt = -3.0)

Как максимально быстро сравнить два списка.

membership test работает медленно, так как занимается перебором списка. Вам надо оптимизировать поиск элемента списка. Для этого нужно применить хеширование. Одним словом, вам надо вместо списков использовать словари. Пусть даже они будут мэпить элементы каждый раз на пустое множество. Т.е. spisok={[a, b, c]:None, [c, k]:None, [3, i, l, d, k]:None, ...}. Если в каком-то месте вам понадобится именно список, а не словарь, то список вожвращается либо функцией list(my_dict), либо метод keys(): my_dict.keys(). Соответсвенно вместо оператора in вы будете использовать метод has_key()

И ещë по поводу оптимизации: код

1  try:
2      a=my_dict[b]
3  except KeyError:
4      pass

работает вдвое быстрее чем

1  if my_dict.has_key(b):
2      a=my_dict[b]

хотя делает тоже самое. Но это так, к слову.

Женя


все сообщения ветви:

Недостаточно прав для написания ответа
Время генерации страницы в секундах: 0.096