使用for循环从列表创建过滤列表

时间:2018-11-04 12:22:28

标签: python python-3.x

我想创建一个函数,该函数从带有for循环的列表中创建一个新列表。在新列表中,应该将int设置为1到49之间的整数。

赞:

filter_list[2,3,55,"test",10]=[2,3,10]

如何使用for循环创建这样的列表?

编辑: 到目前为止,我的代码:

def filter_list(elements):
    list = []
    for i in elements:
        if i in range(1,50):
            list.append(i)
    return list

但是当我想证明它的int还是

浮动时
isinstance(i,str)

可能不起作用

1 个答案:

答案 0 :(得分:0)

您可以使用filter

def filter_list(l):
    return list(filter(lambda x: (isinstance(x, int) or isinstance(x, float)) and 1 <= x <= 49, l))

对于python2,您无需将filter的结果转换为列表。但是对于python3,则需要进行转换。

您将这样称呼它:

>>> filter_list([2,3,55,"test",10])
[2, 3, 10]

或者只是使用列表理解:

def filter_list(l):
    return [x for x in l if (isinstance(x, int) or isinstance(x, float)) and 1 <= x <= 49]