微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。