タプル (リストまたは int の場合も同様) に対して、次のうちどれがより速く実行されるのだろうか :
a_tuple = ('a', 'b',)
if (len(a_tuple) != 0): pass
if (len(a_tuple) > 0): pass
私はいくつかの timeit 実験を行いましたが、結果はかなり似ています (timeit を 100000 回実行するたびに異なります)。時間的なメリットがあるかどうかだけです。
タプル (リストまたは int の場合も同様) に対して、次のうちどれがより速く実行されるのだろうか :
a_tuple = ('a', 'b',)
if (len(a_tuple) != 0): pass
if (len(a_tuple) > 0): pass
私はいくつかの timeit 実験を行いましたが、結果はかなり似ています (timeit を 100000 回実行するたびに異なります)。時間的なメリットがあるかどうかだけです。
長さをテストする代わりに、(空の場合)または(空でない場合)をnot a_tuple
使用True
しtuple
ます。True
if a_tuple:
pass
または、デモンストレーションが言葉よりも雄弁であるように:
>>> if not ():
... print('empty!')
...
empty!
>>> if (1, 0):
... print('not empty!')
...
not empty!
これがマイクロ最適化であるという事実とは別に、空のタプルの偽りのテストも高速です。速度について疑問がある場合は、次のtimeit
モジュールを使用してください。
>>> import timeit
>>> a_tuple = (1,0)
>>> def ft_bool():
... if a_tuple:
... pass
...
>>> def ft_len_gt():
... if len(a_tuple) > 0:
... pass
...
>>> def ft_len_ne():
... if len(a_tuple) != 0:
... pass
...
>>> timeit.timeit('ft()', 'from __main__ import ft_bool as ft')
0.17232918739318848
>>> timeit.timeit('ft()', 'from __main__ import ft_len_gt as ft')
0.2506139278411865
>>> timeit.timeit('ft()', 'from __main__ import ft_len_ne as ft')
0.23904109001159668