Q1 - È il seguente un set()
di un generator expression
o un set comprehension
? (O sono stesso Se è così, sono list
& dict
comprensioni anche corrispondente tipo pressofuso su generatori??)Come funzionano Python Set Comprehensions?
my_set = {x for x in range(10)}
Q2 - La valutazione tiene considerano i valori duplicati & poi rimuoverli applicando set()
?
dup_set = {x for x in [0, 1, 2, 0, 1, 2]}
Condivide la comprensione eseguire (velocità-saggio) meglio di regolari for
loop?
Aggiornamento - Ho provato a utilizzare timeit
per i confronti di velocità. Non sono sicuro che io sia solo (discreto) a riguardo.
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
Ora, utilizzando alcuni condizionali
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
Quindi, c'è un po 'di differenza, è dovuto alla funzionalità essere hardcoded in c
?
Forse potresti usare timeit (http://docs.python.org/2/library/timeit.html) o creare una funzione di temporizzazione del codice con il modulo del tempo per scoprire le differenze di tempo/velocità – Totem