【发布时间】:2017-05-22 12:30:06
【问题描述】:
我有一个将项目包含在撇号中的列表,我可以使用以下“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' 对象”。如果列表项是字符串,我不应该将它们相乘。既然我可以,它们必须是数字,那么为什么我不能向它们添加任何东西呢?
编辑:有人能告诉我为什么这个问题不好吗?我已经阅读了发帖规则,但即将被踢,因为我收到了很多负面反馈,但我只是一个初学者,正在尽我所能写。
【问题讨论】:
-
当你打印 list2 时,它应该是这样的:
['11111', '22222', '33333']。乘法只是复制字符串,所以它不会像 int 一样对待它。 -
在python中你可以将一个字符串相乘以重复多次
-
感谢您的反馈。我已经在大量代码上工作了好几个小时,只是专注于错误代码而不是进行数学运算并意识到它实际上并没有计算出我认为的那样。
-
@Davy 我不同意,但理解问题的最佳方法是将其分解为各个组成部分......他们使用列表的方法没有奏效,所以下一步将是放弃名单。我不是在指责他们(对不起,如果是这样的话),而是试图展示一种可以用来解决大量问题的方法,并试图回答为什么人们会认为它是“穷人” '问题。
-
这本身并不“坏”,但事实上您提出了这个问题并包含了错误的假设,这些假设被断言为对函数结果的实际观察(似乎将列表项视为数字 i>) 表明您没有花费 30 秒在控制台中执行这 3 行代码。如果你这样做了,你的问题将是一个非常不同的问题,你可能会发现为什么运算符在文本序列上以这种方式工作。