为什么需要在以下代码中使用'str'函数?
我正在尝试计算数字中的数字总和。
我的代码
for i in number:
sum(map(int, str(i))
其中 number 是以下数组
[7,79,9]
我按如下方式阅读了我的代码
手册对 str
说明了这一点Type: type
Base Class: <type 'type'>
String Form: <type 'str'>
Namespace: Python builtin
Docstring:
str(object) -> string
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
答案 0 :(得分:8)
鉴于79
,您需要获取[7, 9]
才能总结此列表。
将数字拆分成数字是什么意思?它表示在具有一些基数的数值系统中表示数字(在这种情况下为基数10
)。 E. g。 79
为7 * 10**1 + 9 * 10**0
。
最简单的(嗯,至少在这种情况下)获得这样一个数字表示的方法是什么?将它转换为小数字串!
您的代码就是这样:
>>> str(79)
'79'
# Another way to say this is [int(c) for c in str(79)]
>>> map(int, str(79))
[7, 9]
>>> sum(map(int, str(79)))
16
答案 1 :(得分:2)
在不使用str()
的情况下尝试该代码会发生什么?
str()
用于将整数转换为字符序列,以便map()
可以遍历序列。这里的关键点是“字符串”可以被视为“字符序列”。
答案 2 :(得分:2)
为什么需要在以下代码中使用'str'函数?
因为map采用可迭代的方式,如列表或元组或字符串。
有问题的代码将upp中的所有数字添加到整数中。它通过一个聪明的黑客来做到这一点。它通过执行
将数字转换为数字序列map(int, str(i))
这会将整数2009转换为列表[2,0,0,9]。 sum()然后将所有这些整数加起来,得到11。
一个不太酷的版本是:
>>> number = [7,79,9]
>>> for i in number:
... result = 0
... while i:
... i, n = divmod(i, 10)
... result +=n
... print result
...
7
16
9
但是你的版本更加聪明。