Q1 - 次は aset()
の a ですか、generator expression
それとも aset 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
ですか?