奇怪的python语法,这是如何工作的,它叫什么?

jas*_*son 6 python generator-expression

print max(3 for i in range(4))
#output is 3
Run Code Online (Sandbox Code Playgroud)

使用Python 2.6

3让我失望,继承人我试图解释最新情况.

for range in range(4)使循环循环4次,在每个循环开始时将i从0递增到3.[不知道3在这种情况下意味着什么......] max()返回传递给它的最大迭代次数,结果打印到屏幕上.

Ale*_*ler 14

3 for i in range(4)是一个连续产生3次并max产生一次迭代的生成器并返回具有最高值的元素,这显然是三.


Pau*_*nia 9

这评估为:

print max([3,3,3,3])
Run Code Online (Sandbox Code Playgroud)

......这是一种精心设计的说法print 3.

expr for x in xs是一个生成器表达式.通常情况下,你会使用xexpr.例如:

[2*i for i in range(4)] #=> [0, 2, 4, 6]

  • 小心:实际上这个评估为:`print max(iter([3,3,3,3]))`这是一个生成器表达而不是列表理解. (3认同)

Dou*_*oug 5

它可以改写为:

nums = []
for i in range(4):
    nums.append(3)
print max(nums) # 3! Hurrah!
Run Code Online (Sandbox Code Playgroud)

我希望这使它的无意义变得更加明显.