print max(3 for i in range(4))
#output is 3
使用Python 2.6
3让我失望,继续我试图解释最新情况。
对于范围(4)中的i,产生一个循环,循环4次,在每个循环开始时将i从0递增到3。 [不知道3在这种情况下意味着什么...] max()返回传递给它的最大迭代次数,结果打印到屏幕上。
答案 0 :(得分:14)
3 for i in range(4)
是一个连续产生3次的生成器,max
获取一个iterable并返回具有最高值的元素,显然这里有三个。
答案 1 :(得分:9)
评估结果为:
print max([3,3,3,3])
...这是一种详尽的说法print 3
。
expr for x in xs
是一个生成器表达式。通常,您会在x
中使用expr
。例如:
[2*i for i in range(4)] #=> [0, 2, 4, 6]
答案 2 :(得分:5)
可以改写为:
nums = []
for i in range(4):
nums.append(3)
print max(nums) # 3! Hurrah!
我希望这会使其无意义变得更加明显。
答案 3 :(得分:2)
表达式:
print max(3 for i in range(4))
打印max()
函数的结果是否应用于括号中的内容。但是在括号中你有 generator 表达式创建类似于数组的东西,所有元素都等于3
,但是比表达式更有效:
print max([3 for i in range(4)])
将创建3
的数组并在不再需要它之后将其销毁。
基本上,因为在括号中你只会创建相等的值而max()
函数返回最大的值,所以你不需要创建多个元素。因为元素的数量总是等于1,所以不需要max()
函数,并且可以通过以下代码有效地替换您的代码(至少在您给出的情况下):
print 3
这就是全部;)
要详细了解理解和生成器表达式之间的差异,您可以访问documentation page。