print max(3 for i in range(4))
#output is 3
使用Python 2.6奇怪的Python语法,这是如何工作的,它叫什么?
3在解释什么事情是扔我了,我的继承人尝试。
我在范围(4)中创建一个循环,循环4次,在每个循环的开始处将i从0递增到3。 [不知道3在这种情况下意味着什么......] max()返回传递给它的最大迭代器,并将结果打印到屏幕上。
print max(3 for i in range(4))
#output is 3
使用Python 2.6奇怪的Python语法,这是如何工作的,它叫什么?
3在解释什么事情是扔我了,我的继承人尝试。
我在范围(4)中创建一个循环,循环4次,在每个循环的开始处将i从0递增到3。 [不知道3在这种情况下意味着什么......] max()返回传递给它的最大迭代器,并将结果打印到屏幕上。
这个计算结果为:
print max([3,3,3,3])
...这是一个精心制作的方式来表达print 3
。
expr for x in xs
是一个生成器表达式。通常,您可以在expr
中使用x
。例如:
[2*i for i in range(4)] #=> [0, 2, 4, 6]
3 for i in range(4)
是发电机能产生连续3分四次并取max
可迭代和具有最高值,这是很明显,三这里返回元素。
nums = []
for i in range(4):
nums.append(3)
print max(nums) # 3! Hurrah!
我希望这是它的无意义更明显:
它可以作为被改写。
表达:
print max(3 for i in range(4))
在打印应用到什么是在括号max()
函数的结果。然而,在你有发电机表述制定类似于等于3
所有元素数组的东西,但括号比表达更有效的方式:
print max([3 for i in range(4)])
这将创造的3
的数组,并摧毁它在不再需要之后。
基本上,因为括号中只会创建相等的值,并且max()
函数会返回最大值,您不需要创建多个元素。因为与元素总是等于一个数,变得不通过下面的代码需要max()
功能,您的代码可以有效地代替(至少在你给的情况下):
print 3
那简直是所有; )
要了解更多有关理解和发电机表达之间的差异,您可以访问documentation page。
出于某种原因,这个问题让我想起了巨蟒和圣杯。 – 2011-05-13 20:47:27