首页 > 解决方案 > Python Lambda:长度之间的字符串

问题描述

给定一个字符串列表,在省略长度在 4 到 8(含)之间的任何单词后打印该列表。

我试过这段代码:

 Question = filter(lambda x: len(x) <= 4 and len(x) >= 8, strs)
 print (list(Question))

但它返回了这个:

 [] 

关于如何在不创建两种不同过滤方法的情况下执行此操作的任何想法?

标签: pythonlambdafilter

解决方案


filter将根据谓词保留元素,而不是删除它们。如果要删除长度为 4 到 8 的元素,则应过滤反向条件:

>>> strs = ['black', 'blue', 'green', 'purple', 'yellow', 'test_samples', 'sample_data']
>>> Question = filter(lambda x: len(x)> 8 or len(x) < 4, strs)
>>> list(Question)
['test_samples', 'sample_data']

推荐阅读