isinstance()方法python返回错误的值

时间:2017-10-24 06:45:40

标签: python isinstance

def info_msg(self):
    return "{0}#{1}#{2}".format(info, self.content, self.hidden)

我有这个代码。我想将list_d中的这些数字传递给list_e,但结果是:

list_d = ["a","b","c",3,5,4,"d","e","f",1,"ee"]
list_e = []

print("Before: %s"%(list_d))
print("Before: %s"%(list_e))

for item in list_d:
    if isinstance(item,int):
        list_d.pop(item)
        list_e.append(item)

print("After: %s"%(list_d))
print("After: %s"%(list_e))

不知何故5和1没有弹出,1附加到list_e但5不是。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:5)

您在迭代时修改列表。您可以使用列表推导来制作两个列表,但我会先了解为什么您有一个多类型列表

non_ints = [not isinstance(a, int) for a in list_d]
ints = [isinstance(a, int) for a in list_d]

或作为单个互动版本

non_ints = []
ints = []

for a in list_d:
    if isinstance(a, int):
         ints.append(a)
    else:
         non_ints.append(a)