2
n = 4
v = [16, 19, 23, 28]
w = [2, 3, 4, 5]

idxs = list(range(n))
idxs.sort(key=lambda i: v[i]/w[i], reverse=True)  

objs = ((v[i], w[i]) for i in idxs[m:]) 
for av, aw in objs:
    print av
    print aw

上記のコードのチャンクに出くわしました。m=2 の場合、23 4 28 5 が返されます。以下に示すコード行は Python でどのように機能するのでしょうか。これは関数呼び出しですか? または何?。この機能を説明している Python 2.7 のマニュアルを教えてください。この質問には適切なタイトルが必要ですが、名前を付ける方法がわかりません。何か提案はありますか?

objs = ((v[i], w[i]) for i in idxs[m:])
4

1 に答える 1

4

これはジェネレータ式であり、ジェネレータ内包表記と呼ばれることもあります。コードの最後の 4 行は、基本的に次のコードと同等です。

for i in idxs[m:]:
    av, aw = v[i], w[i]
    print av
    print aw
于 2013-06-30T14:01:31.347 に答える