鱼C论坛

 找回密码
 立即注册
查看: 3035|回复: 4

[已解决]列表remove()方法报错

[复制链接]
发表于 2016-12-6 18:32:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. list1=input('请输入一个序列:')
  2. list(list1)
  3. for each in list1:
  4.     if each.isdigit!=0:
  5.         list1.remove(each)
  6. print(sum(list1))
复制代码

--------------------------------------------------------赋值报错:
  1. 请输入一个序列:[1,23,4]
  2. Traceback (most recent call last):
  3.   File "F:/python/Python练习题/lesson16.py", line 5, in <module>
  4.     list1.remove(each)
  5. AttributeError: 'str' object has no attribute 'remove'
复制代码


为什么remove()会报错呢?找了好久没找到问题所在。
最佳答案
2016-12-6 19:29:25
list1.remove(each)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-6 19:29:25 | 显示全部楼层    本楼为最佳答案   
list1.remove(each)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-6 20:38:59 | 显示全部楼层
你用for循环把列表迭代出来了,那么each就是一个字符串,字符串是不可变的,所以字符串没有remove方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-6 21:12:51 | 显示全部楼层
hanhm85 发表于 2016-12-6 20:38
你用for循环把列表迭代出来了,那么each就是一个字符串,字符串是不可变的,所以字符串没有remove方法

可是我报错的语句是列表list1使用remove方法去掉each,而不是each字符串使用remove方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-6 22:48:24 | 显示全部楼层
这题我自己调试了一下,找到了原因所在:
  1. list1=input('请输入一个序列:')
  2. #如果输入[1,23,4]
  3. list(list1)
  4. #这步的话输出['[', '1', ',', '2', '3', ',', '4', ']'],这显然是错误的,python把所有的输入都当做是字符串,显然这不是我想要的结果,但是我用list方法去转换也是错误的方式。
  5. for each in list1:
  6.     if each.isdigit!=0:
  7. #这步我的isdigit必须是字符串的方法,而each可能是整数,需要将其强制转化为字符串,且这里isdigit后面要加括号,不加的话有时候出来的结果不一样。
  8. 还有,我让if条件判断去和0比较是错误的,应该用True和False来代替,不然出现莫名其妙的错误,我也不知道为何。
  9.         list1.remove(each)
  10. #这步如果被执行,那么程序就会自动跳出for循环,我估计是改变了list1导致循环不能进行。
  11. print(sum(list1))
复制代码



-----------------------比较正确的写法。

  1. list1=[1, 2, 4, 'a', 'cd']
  2. #创造一个切片,因为在下面的for循环语句中,一旦列表弹出一个值,就会跳出for循环,导致后面的元素不再进行判断操作
  3. list2=list1[:]
  4. for each in list1:
  5.     if str(each).isdigit()!=True:
  6.         list2.remove(each)
  7. print(sum(list2))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 12:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表