Q1- 以下是set()
of a generator expression
or a set comprehension
? (或者它们是相同的吗?如果是的话,是list
& dict
理解也相应的类型转换在发电机上?)
my_set = {x for x in range(10)}
Q2- 评估是否考虑重复值然后通过应用删除它们set()
?
dup_set = {x for x in [0, 1, 2, 0, 1, 2]}
理解的表现(速度方面)是否比常规的更好?for
loops?
Update- 我尝试使用timeit
用于速度比较。不确定我是否被just(公平)关于它。
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
所以,有很大的区别,是因为功能被硬编码在c
?