Python 中列表的过滤元素

Filter elements of a list in Python

我想过滤给定列表的元素。 我有一个整数,我只想将数字保留在所有字符都小于该数字的列表中。 (现在是 5)。我可以为此编写更长的代码,但我想要使用 filter() 的 1 行代码。

我只做到了这一点:

def fil(l):
    return list(filter(lambda x: x<5, [int(s) for i in l for s in str(i)]))

对于 l = [1,2,4,8,12] 它应该回馈:

[1, 2, 4, 12]

但是 returns 这个:

[1, 2, 4, 1, 2]

你能帮我解决这个问题吗?

不使用 filter 这可能有帮助:

l = [1,2,4,8,12]
results = [item for item in l if all(int(x) < 5 for x in str(item))]

如果您一定要使用过滤器和您的函数 fil 那么您有:

def fil(l):
    return list(filter(lambda item: all(int(x) < 5 for x in str(item)), l))