微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

包含 int 和 str 的列表上的 isinstance

如何解决包含 int 和 str 的列表上的 isinstance

我正在尝试从包含数字和字符串的列表中取出数字并将它们移动到一个新列表中。

x = 0
list1 = ["a","b","c",1,2,3,4,5,6,"d",7]
list2 = []
for item in list1:
    if isinstance(item,int):
        list2.append(item)
        list1.pop(x)
    x +=  1
list1
list2

结果不是我所期望的:

list1
['a','b','c','d']
list2
[1,7]

我不明白为什么列表中的第二个连续数字的条件为假,是不是因为声明的方式?

解决方法

list1 = ["a","b","c",1,2,3,4,5,6,"d",7]
list2 = []
list3 = []
for item in list1:
    if isinstance(item,int):
        list2.append(item)
    elif isinstance(item,string):
        list3.append(item)

不要使用 pop 删除列表中的索引,只需创建一个新列表。当您从正在循环的列表中删除一个值时,迭代会变得一团糟。最好不要这样做。

,
list1 = ["a",7]
integers = []
strings = []

for item in list1:
    if isinstance(item,int):
        integers.append(item)
    elif isinstance(item,str):
        strings.append(item)

但这只有在您知道列表中将包含什么类型的数据时才有效

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。