sum 函数返回迭代器的总和,但此代码如何工作?

问题描述

print(sum(map(int,input())))

我在谷歌上搜索了 sum 的定义,它说 sum 函数将迭代器中的所有数字相加。 我相信迭代器是列表、元组、字典、集合。 当我输入 123 时,它返回 6。 但是 123 不是迭代器...

解决方法

map(int,'123') 返回可迭代的 [1,2,3],如您所见,执行以下命令:

for x in (map(int,'123')):
    print(x)

这个迭代的总和是 6

,

像这样拆分它会有所帮助:

x = input()
print(x)
y = map(int,x)
print(y)
z = sum(y)
print(z)

地图接受您输入的字符串(如“123”)并将其转换为具有整数(如 [1,3])的迭代器。这可以在下一步中进行总结。

这给出:

123
<map object at 0x7fb91affdd30>
6
,

当你运行代码时,

print(sum(map(int,input())))

它将输入作为可迭代的字符串,然后涉及 .map() 函数,该函数将每个字符串类型值转换为整数类型,因为 int 作为参数传递并返回迭代器。然后 .sum() 函数添加临时列表中的所有元素并打印输出。

为了标记差异,运行下面的代码,它会给你一个错误输出,说 "TypeError: 'int' object is not iterable" 因为我们将接受输入,我们将它转​​换成整数(不是迭代器),然后传递给 {{1} } 函数,

.map()
,

Python 非常适合探索 - 当某些事情很神秘时,以交互方式检查它。

示例:

>>> x = input()
123
>>> x
'123'
>>> map(int,x)
<map object at 0x7f692821cc40>
>>> for i in map(int,x): print(i)
...
1
2
3
>>> list(map(int,x))
[1,3]