对列表中的字符元素删除,保留数值类元素并排序输出

l=[1,'abc',234,'www']#对列表中的字符元素删除,保留数值类元素并排序输出,这大神们教教

如下:

l=[1,'abc',234,'www']
for i in l:
    if type(i) == str:
        l.remove(i)
s = sorted(l)
print(s)

如有帮助,望采纳

l=[1,'abc', 234,'www']

res = [i for i in l if isinstance(i, (int, float))]
print(sorted(res))

"""--result
[1, 234]

"""

初学者可以这样写:

>>> l = [1, 'abc', 234, 'www']
>>> result = list()
>>> for item in l:
    if isinstance(item, (int, float)):
        result.append(item)

        
>>> result
[1, 234]

有经验的程序员会这样写:

>>> l = [1, 'abc', 234, 'www']
>>> [item for item in l if isinstance(item, (int, float))]
[1, 234]

使用python基础函数isinstance判断是否为字符元素

l = [1, 'abc', 'aaa', 'www', 2, 3, 4]
# 将待删除的元素暂存,不能直接在list中删除,list中删除之后索引会变,导致for出现异常遍历
del_item = []
for item in l:
    if isinstance(item, str):
        del_item.append(item)
# 删除字符元素
for item in del_item: l.remove(item)
# 倒序排序 desc
l.sort(reverse=True)
# l.sort()  # 正序排序 asc
print(l)

img