|  | 
 
| 
我想要实现的功能是,把列表中的字符串删掉
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  代码:
 numbers = [1,2,2,'a','y',1]
 for each in numbers:
 if type(each) == str:
 num = numbers.index(each)
 del numbers[num]
 print(numbers)
 
 为什么结果是:[1, 2, 2, 'y', 1]
 
 如果输入的是numbers = [1,2,2,'a',1,'y']
 结果是:[1, 2, 2, 1]
 
 本帖最后由 Peteryo01223 于 2021-3-12 13:32 编辑 
我知道了,原因是: 运行时,Python 检查到位置 [3],发现 a 是 str,就把它删了。接着从位置 [4] 继续检查。注意,删除 a 后,y 位置前移到了 [3],没被程序检查。当 numbers 中,a 和 y 被数字 1 隔开时,这个 1,也没有被程序检查。但因为,跳过的不是 str ,人看上去觉得是“对”的。其实也有隐患。
 run 后复制代码numbers = [1,2,2,'a','程序根本不检查本位置!', 1]
for each in numbers:
    if type(each) == str:
        num = numbers.index(each)
        del numbers[num]
print(numbers)
结果:
 复制代码============================
[1, 2, 2, '程序根本不检查本位置!', 1]
最便捷的解决方法:按3#楼鱼油说的,简单添加[:]
固定 你要判断的对象,即可。 | 
 |