fengchui 发表于 2020-7-7 11:48:22

016讲 动动手2 sum函数

numbers =
result = 0
for each in numbers:
    if isinstance(each, str):
      numbers.remove(each)
result = sum(numbers)
print(result)
请问这个代码为什么只执行一次remove操作呀?

qiuyouzhi 发表于 2020-7-7 11:51:13

在遍历列表的时候改变遍历的列表,会导致少遍历一些元素。
改成这样就好了:
numbers =
result = 0
for each in numbers[:]:
    if isinstance(each, str):
      numbers.remove(each)
result = sum(numbers)
print(result)

陈尚涵 发表于 2020-7-7 12:16:23

2楼说的对,Python语言是动态的,所以就会少遍历,用numbers[:]把numbers的模型拷贝一下就OK了

fengchui 发表于 2020-7-7 13:08:22

qiuyouzhi 发表于 2020-7-7 11:51
在遍历列表的时候改变遍历的列表,会导致少遍历一些元素。
改成这样就好了:

好的,谢谢~
页: [1]
查看完整版本: 016讲 动动手2 sum函数