Str在Python地图和总和

时间:2009-10-10 02:13:22

标签: python string

为什么需要在以下代码中使用'str'函数?

我正在尝试计算数字中的数字总和。

我的代码

for i in number:
    sum(map(int, str(i))

其中 number 是以下数组

[7,79,9]

我按如下方式阅读了我的代码

  1. 循环通过数组
  2. 计算整数位数之和
  3. 通过地图越来越多
  4. 获取数字中的给定数字
  5. 使每个对象(给定数字)转换为字符串 //这没有意义
  6. 手册对 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.
    

3 个答案:

答案 0 :(得分:8)

鉴于79,您需要获取[7, 9]才能总结此列表。

将数字拆分成数字是什么意思?它表示在具有一些基数的数值系统中表示数字(在这种情况下为基数10)。 E. g。 797 * 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

但是你的版本更加聪明。