问答详情
源自:9-5 Python函数参数

用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] ,又没毛病了!


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


提问者:慕侠6748888 2020-10-18 18:12

个回答

  • qq_迷失在天堂里云_0
    2020-11-22 12:41:35

    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)


  • 慕侠6748888
    2020-10-19 09:09:14

    http://img2.mukewang.com/5f8ce6ee0001048611300403.jpg

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

  • 慕娘3557327
    2020-10-18 21:35:55

    大哥 没问题呀