为了账号安全,请及时绑定邮箱和手机立即绑定

用isinstance判定删除列表中某一类型元素时,出现一个奇怪的问题!

c=[2,5,2,3,3,4,8,'a','b','c','d',1.1]

    for a in c :

        if   not isinstance(a,int) and not isinstance(a,float) :   #判定 不是整型又不是浮点型时,结果为真,执行下面代码:

            c.remove(a)

print(c)

这里运行结果是:[2,5,2,3,3,4,8,'b','d',1.1] ,'b' 和‘d’删除不了。

如过把列表改为:c=[2,5,2,3,3,4,8,'a',2,'b',7,'c',.2'd',1.1]

结果为:[2,5,2,3,3,4,8,2,7,3.2,1.1] ,又没毛病了!


我这里的问题是:为什么每两个字符串后面的那一个删除不了?


正在回答

3 回答

remove函数只能删除首个满足条件的数,不如换种方式

c=[2,5,2,3,3,4,8,'a','b','c','d',1.1]
c2=[]
for t in c:
    if  isinstance(t,float) or isinstance(t,int):
        c2.append(t)
print(c2)


0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5f8ce6ee0001048611300403.jpg

额。。。。不会是编译器或者版本问题吧

0 回复 有任何疑惑可以回复我~

大哥 没问题呀

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

用isinstance判定删除列表中某一类型元素时,出现一个奇怪的问题!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信