0-я петля ниже работает намного быстрее *, чем 1 (3 × для Python-2.7, 5 × для Python-3.4):Компилятор оптимизации операций по констант
for x in range(0,999999):
"u" in {"a", "e", "i", "o", "u"}
for x in range(0,999999):
"u" in set("aeiou")
Похоже, что Python, когда он задан {"a", "e", "i", "o", "u"}
, строит набор один раз, но при задании set("aeiou")
, он создает набор каждый раз, когда это необходимо.
Это правильно? Если да, то почему Python не оптимизирует последнее?
* Как измерено с помощью time python -c '<code>'
Связанный: [фильтрация понимания списка - «ловушка набора()» (http://stackoverflow.com/questions/20056458/list-comprehension-filtering-the-set-trap) –