鱼C论坛

 找回密码
 立即注册
查看: 4901|回复: 5

新手求解答---将列表里的字符串忽略,所有元素求和

[复制链接]
发表于 2016-3-24 21:46:05 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ivyintel 于 2016-3-24 21:57 编辑

题目:将列表里的字符串忽略,所有元素求和[
list1=[2,3,45,"ab",1,3]
summ=0
for i in list1:
    if isinstance(i,str):
       list1.remove(i)
    else:
        summ=i+summ
        print(i,summ)
print("总数是:%d" %summ)

2 2
3 5
45 50
3 53
总数是:53

打印出来的结果是53,很想知道这个remove方法怎么会影响到字符串后面一个数的读取呢???
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-3-24 21:51:07 | 显示全部楼层
  1. list1 = [2, 3, 45, "ab", 1, 3]
  2. summ = 0

  3. for i in list1[:]:
  4.     if isinstance(i, str):
  5.         list1.remove(i)
  6.     else:
  7.         summ = i + summ
  8.         print(i, summ)

  9. print("总数是:%d" % summ)
复制代码

善用分片, 另外你在列表赋值的时候, 1和3之间咋放个地雷呢? 是要暗算我吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-24 21:56:32 | 显示全部楼层
hldh214 发表于 2016-3-24 21:51
善用分片, 另外你在列表赋值的时候, 1和3之间咋放个地雷呢? 是要暗算我吗

受教了。。感谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-24 22:04:04 | 显示全部楼层
for i in list1:是遍历list1的每个元素,当list1变化时就会错乱。如:
  1. >>> list1 = [1, 2, 3, 4, 5, 6]
  2. >>> for i in list1:
  3.         print(i)
  4.         list1.remove(i)

  5.        
  6. 1
  7. 3
  8. 5
复制代码

hldh214版主用[:]生成一个copy就避免了次问题。
另外按题意要求无需改变list1
  1. list1=[2,3,45,"ab",1,3]
  2. summ=0
  3. for i in list1:
  4.     if isinstance(i,int):
  5.         summ=i+summ
  6.         print(i,summ)
  7. print("总数是:%d" %summ)



  8. 2 2
  9. 3 5
  10. 45 50
  11. 1 51
  12. 3 54
  13. 总数是:54
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-3-30 10:25:07 | 显示全部楼层
冬雪雪冬 发表于 2016-3-24 22:04
for i in list1:是遍历list1的每个元素,当list1变化时就会错乱。如:

hldh214版主用[:]生成一个copy就 ...

原来如此。。。谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-30 10:54:46 | 显示全部楼层
再简化一下:
  1. >>> print(sum([x for x in [2, 3, 45, "ab", 1, 3] if isinstance(x, int)]))
  2. 54
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-20 08:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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