3

私は初心者の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を使用しています]

コードは「プログラミング集団知能」から改作され まし

4

0 に答える 0