使用for循环迭代列表/选择数据类型以从源列表中删除

时间:2017-01-11 17:05:57

标签: python

下面的代码试图将(Python)列表中的所有整数附加到空列表中,然后从源列表中删除所有整数,只留下字符串:

代码是:

a = [101,'str1',3213, 'str845454654164',10183,25,14,33,8,"pfdr"]
b = []

for i in a:
    if isinstance(i, int):
        b.append(i)
for i in a:
    if isinstance(i,int):
        a.remove(i)
print("list a: ", a)
print("list b", b)

但输出如下:

list a:  ['str1', 'str845454654164', 25, 33, 'pfdr']
list b [101, 3213, 10183, 25, 14, 33, 8]

所有整数都成功附加到列表b但由于某种原因,数字25和33留在我们想要清理的源列表中。在第一个实例下再次将第二个for循环粘贴两次会产生所需的结果,但并不是非常好的代码。

为什么这不能按预期工作?

0 个答案:

没有答案