这个在Python中是如何工作的:print(sum(int(x) for x in raw_input().split()))

5 投票
6 回答
13375 浏览
提问于 2025-04-17 12:20

我刚接触Python,看到下面这行代码让我很惊讶。

print (sum(int(x) for x in raw_input().split()))

我用Java的思维方式无法理解里面发生了什么,特别是for循环中x是怎么传给int()的。

6 个回答

2

我们来分解一下这个内容。

print (sum(int(x) for x in raw_input().split()))

这也可以表示为

sequence = raw_input().split()
conv = []
for i in sequence:
    conv.append(int(i))
print sum(conv)

现在我们可以用一行代码把它们合并起来,使用

[int(x) for x in raw_input().split()]

但这样做不是懒惰的写法,所以为了让它变得懒惰,我们只需要把 [ 替换成 (

(int(x) for x in raw_input().split())

现在因为这是一个可迭代的对象,我们可以把它传给 sum() 函数

这就是发生的事情。

3

首先,raw_input().split() 这个命令会读取一行输入,然后把这行输入按照空格分开,变成一个个小部分。比如说,如果输入是 1 3 2 5 7 3,那么它就会变成一个列表 ['1', '3', '2', '5', '7', '3']

这个列表接着会用在一个叫做 生成器表达式 中,写作 int(x) for x in list_above。这个表达式的作用是把列表里的每个元素都转换成整数形式。

这个生成器会在调用 sum() 的时候被计算出来,sum() 会把所有的数字加起来。

9

raw_input().split() 会把每一行输入分成一个数组。(int(x) for x in a) 是一个生成器表达式,它会把每一行的输入都变成整数。这样,生成器表达式的结果就是一个整数数组,每个元素对应一行输入。

最后,sum 会把这个数组里的所有元素加起来,当然 print 会把结果输出出来。所以,这段代码的作用就是计算所有输入行的总和,而每一行都是一个数字。

撰写回答