私は 2.6 の集合理解を試みていましたが、次の 2 つの方法に出くわしました。最初の方法は2番目の方法よりも速いと思いましたが、timeit
そうでなければ提案されました。2 番目のメソッドは追加のリストのインスタンス化とそれに続くセットのインスタンス化を行っているにもかかわらず、なぜ 2 番目のメソッドの方が高速なのですか?
方法 1:
In [16]: %timeit set(node[0] for node in pwnodes if node[1].get('pm'))
1000000 loops, best of 3: 568 ns per loop
方法 2:
In [17]: %timeit set([node[0] for node in pwnodes if node[1].get('pm')])
1000000 loops, best of 3: 469 ns per loop
どこでpwnodes = [('e1', dict(pm=1, wired=1)), ('e2', dict(pm=1, wired=1))]
。