帮我改下让带有数值的字符串跟负数数值都筛选出来

img

img


帮我改下让带有字符串跟负数的数值都筛选出来定头一个函数:
def filter _ num ( arr ):
arr :输入一个列表
返回一个新的列表,把 arr 列表里所有的数值类型和数值字符串筛选出来

l = ["python", "c++", "php", "java",3.5,"3.14",5.8, "2.1.1", "-3.2", 0, -1]
def filter_num(l):
    def v(x):
        try:i = True if type(float(x)) ==float else False
        except: i = False
        return i    
    return list(filter(v, l))

res = filter_num(l)
print(res)


def filter_num(arr):
    a = []
    for i in arr:
        if type(i)!= str:
            if type(i) == int and i<0:
                pass
            else:
                a.append(i)
    return a 

第一个if筛掉str,第二个去掉负数


def filter_num(arr):
    res = []
    for origin in arr:
        try:
            i = float(origin)
        except Exception as e:
            i = None

        if i is not None:
            res.append(origin)
    return res


print(filter_num(["111fasdf", "3.5", "dasf", "-2.4", "ddfsa", "0.2", 1]))