私はPython 3.Xのドキュメントを読んでいますが、リスト理解の実行速度と正確に動作する方法については疑問があります。List ComprehensionはPythonでどのように正しく動作しますか?
のは、次の例みましょう:これは新しいリストを返す私の知識で今
リスト1
...
L = range(0,10)
L = [x ** 2 for x in L]
...
を、そしてそれが書き留めて同等です:
リスト2
...
res = []
for x in L:
res.append(x ** 2)
...
主な違いは、私が正しい場合、実行の速度です。リスト1はインタープリタ内でC言語の速度で実行されるはずですが、リスト2はそうではありません。
しかし、リスト2は、リスト1は、インタプリタ&リスト内のCの速度で実行されている理由2がではないので、リスト内包表記は(ないことを確認)内部的に何ですか?どちらも処理される前にバイトコードに変換されるか、何か不足していますか?
_bothは処理される前にバイトコードに変換されています_はい、そうですか?彼らは同じバイトコードに変換されないので、なぜ彼らは同じ時間を取る必要がありますか? –
@ŁukaszRogalskiは、リストの理解が内部的に何をしているのか2を挙げていませんか?その場合、同じバイトコードに変換する必要があります。 – Sid
リスト内包表記の主な目的は、複雑なリストの作成を簡素化し、ワンライナーへの可読性を向上させることです。コンパイルされたバイトコード 'pyc'に違いがあるかどうかを比較することができます。Pythonのソースコードが公開されているので、Cを読んだら、リストの理解に対応するアルゴリズムを読むことができます。 – noumenal