Q1 - 以下是set()
agenerator expression
还是 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
循环更好?
更新- 我尝试使用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
所以,有很大的不同,是因为功能被硬编码c
吗?