isinstance()方法返回错误的值

2024-04-25 05:48:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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))

我有这个密码。我想将列表d中的数字转移到列表e,但结果是:

Before: ['a', 'b', 'c', 3, 5, 4, 'd', 'e', 'f', 1, 'ee']
Before: []
After: ['a', 'c', 5, 'd', 'e', 'f', 1, 'ee']
After: [3, 4, 1]

不知何故,5和1没有弹出,1被添加到列表中,但5没有。我的代码怎么了?你知道吗


Tags: in密码列表forifitempopee
1条回答
网友
1楼 · 发布于 2024-04-25 05:48:07

您在遍历列表时正在修改它。你可以使用列表理解来制作这两个列表,但我首先会研究为什么你有一个多类型的列表

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)

相关问题 更多 >