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

那是一个生成器表达式,有时也称为生成器理解。最后四行代码基本等价于

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