どちらが速く、なぜですか?顕著な違いはありますか?Python 3の高速for forループ
""" my_list=[1,2,3...N] """
for i in my_list:
do something
または
for i in range(1,N):
do something
後者の場合にはレンジ機能が低下する可能性がありますが、私はin
オペレータが実際にどのように動作するか分からないN回と呼ばれるだろうと私には思えます。
どちらが速く、なぜですか?顕著な違いはありますか?Python 3の高速for forループ
""" my_list=[1,2,3...N] """
for i in my_list:
do something
または
for i in range(1,N):
do something
後者の場合にはレンジ機能が低下する可能性がありますが、私はin
オペレータが実際にどのように動作するか分からないN回と呼ばれるだろうと私には思えます。
>>> t = timeit.Timer("""for i in range(3):
... pass""")
>>> t.timeit(1)
2.199320988438558e-06
に並置として:
>>> t = timeit.Timer("""list_a=[0,1,2]
... for i in list_a:
... pass""")
>>> t.timeit(1)
4.398641522129765e-06
あなたはこれらの操作の間の時間差を見ることができます。 さらに、Python 2では、これらの値をすべて同時に(単純な反復のように)必要としない場合、範囲の代わりにxrangeを使用することをお勧めします。これは、各反復で値を生成するためです。たくさんのメモリを節約し、時にはCPUも(もっと複雑なケースでは)節約します。詳細については、
'range'機能は、N回呼び出されません。 Python 3.xを使用している場合、2番目の方法は、 'range'がリスト全体を前もって構築しないので、少し速く、より効率的です。 Python 2.xでは、同じエフェクトに対して 'xrange'を使うことができます。 – Selcuk
ああ、私はちょうどPython 3の方が速いことを意味しました。最初の方法か2番目の方法は? – user1185474
@JérômePython 3では、2番目の方法が高速です。 Python 2でより高速にメモリを使用するには、rangeをxrangeに置き換えることができます。 – Selcuk