Python中的Str';s映射与求和
为什么需要在以下代码中使用函数“str”? 我试图计算一个数字中的数字之和 我的代码Python中的Str';s映射与求和,python,string,Python,String,为什么需要在以下代码中使用函数“str”? 我试图计算一个数字中的数字之和 我的代码 for i in number: sum(map(int, str(i)) 其中number是以下数组 [7,79,9] 我读我的代码如下 循环遍历数组,以便 计算整数位数的和 通过映射获取数字中的给定数字 这样,每个对象(给定的数字)都将转换为字符串//这没有意义 手册上说这是str Type:Type 基类: 字符串形式: 名称空间:Python内置 文档字符串: str(object)->st
for i in number:
sum(map(int, str(i))
其中number是以下数组
[7,79,9]
我读我的代码如下
Type:Type
基类:
字符串形式:
名称空间:Python内置
文档字符串:
str(object)->string
返回对象的良好字符串表示形式。
如果参数是字符串,则返回值是相同的对象。
如果不使用str()
尝试该代码,会发生什么
str()
用于将整数转换为字符序列,以便map()
可以在序列上迭代。这里的关键点是,可以将“字符串”视为“字符序列”。如果不使用str()
尝试该代码,会发生什么
str()
用于将整数转换为字符序列,以便map()
可以在序列上迭代。这里的关键点是,一个“字符串”可以被视为一个“字符序列”。给定79
您需要获得[7,9]
,以总结此列表
把一个数字分成几位数是什么意思?它的意思是用一些基数来表示数字系统中的数字(在这种情况下,基数10
)。例如<代码>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
给定
79
您需要获得[7,9]
,以汇总此列表
把一个数字分成几位数是什么意思?它的意思是用一些基数来表示数字系统中的数字(在这种情况下,基数10
)。例如<代码>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
为什么需要在以下代码中使用函数“str”? 因为map需要一个iterable,比如列表、元组或字符串 该代码将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
但是你的版本确实更聪明。为什么你需要在下面的代码中使用函数“str”? 因为map需要一个iterable,比如列表、元组或字符串 该代码将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
但是你的版本确实更聪明。你怎么能看出
map()
需要字符作为输入手册中说映射(函数,序列[,序列,…])->列表序列的数据类型是什么?-似乎一个序列可能只由字母组成,而不是数字。在类型更完善的语言中,map
的类型为:forall a。(a->b),列表(a)->列表(b)
。Python中的Sequence(实际上这里是Iterable
)是使用\uuuuu iter\uuuu
方法返回另一个名为迭代器的东西的东西。迭代器具有与实际迭代相同的\uuu iter\uuu
和next
。“似乎序列可能只由字母组成,而不是数字。”不。数字序列是完全可能的,例如(1,2,3,4,5)。而且,有必要记住数字之间的差异(整数,如数学概念)和字符(可能是字母、数字、标点符号或其他字符)。您如何看到map()
需要字符作为输入?——手册中说映射(函数、序列[、序列,…])->list.-序列的数据类型是什么?-序列似乎可能只包含字母,而不是数字。在类型更为完善的语言中,map
的类型为:对于所有的a.(a->b),list(a)->list(b)
。sequence(实际上,Iterable
)在Python中,使用\uuuuuuuuuuuuuuuuuuuu
方法返回另一个名为迭代器的东西。迭代器具有与实际迭代相同的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
和下一个
。“序列似乎可能只包含字母,而不是数字。”不。数字序列是完全可能的,比如(1,2,3,4,5)。而且,有必要记住数字(整数,如数学概念)和字符(可能是字母、数字、标点符号或其他字符)之间的差异。我发现“字符串”是Python中不可变的字符序列,因此您首先需要一个新字符串来进行编辑。-但是,在您的示例中,当79是一个新输入时,您为什么需要使用str
进行编辑。-我想知道在给定的示例中,您何时不需要使用函数str
。您的意思是转换to十进制数字允许计算总和?-它