问题描述
我想过滤给定列表的元素。
我有一个整数,我只想将数字保留在所有字符都小于该数字的列表中。 (现在是 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,12]
但它返回这个:
[1,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))