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,则返回234285。我想知道下面的代码行在Python中是如何工作的,这是一个函数调用吗?或者什么?。您能给我指一下解释这个特性的Python2.7手册吗?我需要一个更好的题目来回答这个问题,但我不知道怎么命名,有什么建议吗?
objs = ((v[i], w[i]) for i in idxs[m:])

最佳答案

这是agenerator expression,有时也被称为agenerator comprehension。最后四行代码基本上相当于

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

10-06 00:05