您正在迭代它时修改列表.它将跳过元素,因为列表在迭代期间会发生变化.删除项目list.remove()
也将删除该元素的第一个出现,因此可能会有一些意外的结果.
从列表中删除元素的规范方法是构造一个新列表,如下所示:
>>> def check(temp): ... return list(x for x in temp if not isinstance(x, str))
或者您可以返回常规列表理解:
>>> def check(temp): ... return [x for x in temp if not isinstance(x, str)]
您通常应该测试类型isinstance()
而不是type()
.type
例如,他不知道继承.
例子:
>>> check(['a', 'b', 1]) [1] >>> check([ 1, 'a', 'b', 'c', 2 ]) [1, 2] >>> check(['a', 'b', 'c', 'd']) []