我有一个用撇号括起来的列表,我可以使用下面的“for循环”
list1 = ['1','2','3']
list2 = [i * 5 for i in list1]
print list2
它似乎将列表项视为数字,但当我将乘法符号更改为加法符号时:
list1 = ['1','2','3']
list2 = [i + 5 for i in list1]
print list2
我得到错误“不能连接'str'和'int'对象”。如果列表项是字符串,我就不能将它们相乘。既然我可以,它们一定是数字,那么为什么我不能给它们加上什么呢?你知道吗
编辑:有人能告诉我为什么这个问题不好吗?我已经通读了张贴规则,但即将被踢,因为我得到了很多负面反馈,但我只是一个初学者,并试图写最好的,我可以。你知道吗
在第一个示例中,不进行数字相乘:如果将字符串相乘,则将字符串重复
n
次,如下所示:因此,您的第一个代码片段将导致:
不支持在
str
和int
之间进行加法,因此会出错。可能是因为唯一合理的操作是将数字加到字符串的末尾,但这又不是数值相加。你知道吗如果要进行数值计算,必须首先用
int(..)
将其转换为int
:如您所见,这里的结果是一个带有
int
的列表(数字周围没有引号)。你知道吗大多数序列(列表、元组、字符串等)在与整数相乘时会构造相同类型的重复序列。比如:
'2' * 5
将返回“22222”作为字符串,而不是您所想的10。你知道吗您应该强制转换变量
int(i) + 5
,这会将i视为整数而不是字符串。你知道吗在命令行中尝试以下操作:
你是这么想的吗?可能不是。。。你知道吗
如果要进行计算,则需要执行以下操作:
这两个结果都是
int
,而不是str
如果要执行字符串串联,则需要执行以下操作之一:
相关问题 更多 >
编程相关推荐