Q1 - a set()
generator expression
или set comprehension
? (Или они же Если да, list
& dict
постижений также соответствующий тип отливка на генераторах?)Как работают Python Set Comprehensions?
my_set = {x for x in range(10)}
Q2 - ли оценка рассмотреть повторяющиеся значения & затем удалить их, применяя set()
?
dup_set = {x for x in [0, 1, 2, 0, 1, 2]}
выполняет ли понимание (скорость-накрест) лучше, чем обычные for
петли?
Обновление - Я попытался использовать timeit
для сравнения скорости. Не уверен, что я просто (справедливо) об этом.
C:\>python -m timeit "s = set()" "for x in range(10):" "
s.add(x)"
100000 loops, best of 3: 2.3 usec per loop
C:\>python -m timeit "s = {x for x in range(10)}"
1000000 loops, best of 3: 1.68 usec per loop
Теперь, используя некоторые условными
C:\>python -m timeit "s = set()" "for x in range(10):" "
if x%2: s.add(x)"
100000 loops, best of 3: 2.27 usec per loop
C:\>python -m timeit "s = {x for x in range(10) if x%2}"
1000000 loops, best of 3: 1.83 usec per loop
Таким образом, существует довольно некоторая разница, это связано с функциональностью быть HARDCODED в c
?
Возможно, вы можете использовать timeit (http://docs.python.org/2/library/timeit.html) или создать функцию синхронизации времени с модулем времени, чтобы узнать разницу во времени/скорости – Totem