奇怪的Python for语法,怎么回事,叫什么?

6 投票
4 回答
2882 浏览
提问于 2025-04-16 17:36
print max(3 for i in range(4))
#output is 3

使用Python 2.6

这个3让我有点困惑,下面是我尝试解释发生了什么。

for i in range(4) 是一个循环,它会循环4次,每次循环开始时,i的值从0增加到3。[我不知道这里的3是什么意思...] max() 函数会返回传给它的最大值,然后结果会显示在屏幕上。

4 个回答

7

可以把它改写成:

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

我希望这样能让它的无意义更加明显。

11

这段代码的结果是:

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]
14

3 for i in range(4) 是一个生成器,它会连续输出数字3四次。而 max 是一个函数,它可以接收一系列的数字,然后找出其中最大的那个数字。在这里,最大的数字显然就是3。

撰写回答