私は初心者のPythonユーザーであり、ジェネレーターを頻繁に使用していますが(ジェネレーターはきちんと簡潔であり、forループ(または反復)に対応するよりも優れているかどうかを理解したいです)より高速:処理時間および/または呼び出しオーバーヘッドの意味で、例 -: [ここでは、データは辞書オブジェクトです]
from math import sqrt
# **Generator**
sum = sqrt(sum([pow(data[pers1][item] - data[pers2][item], 2)
for item in data[pers1]
if item in data[pers2]]))
# **For loop Equivalent**
sum = 0
for item in data[pers1]:
if item in data[pers2]:
sum += sqrt(pow(data[pers1][item] - data[pers2][item], 2))
ループ構造はまったく同じですか?それが異なる場合(他の場合)、それはいつですか? 入力データのスケールアップと時間の測定 (ルックアップのプロキシ) を試みましたが、決定的ではありませんでした。これをもっと直感的に理解したい、つまり違いがあるかどうか。
[私はpython 2.7を使用しています]
コードは「プログラミング集団知能」から改作され ました。