如何用Python列表推导式过滤短长度令牌并保留指定子列表元素?
解决方案
直接用列表推导式结合条件判断就能实现,核心逻辑是保留长度≥2的令牌,或者属于指定保留列表的令牌:
tokens = ['I', 'want', 'to', 'learn', 'coding', 'in', 'r', 'and', 'c++', 'today', ',', 'and', 'then', 'I', "'ll", 'be', 'learning', 'c#', 'and', 'c'] keep_list = ['r','c','js','c#'] filtered_tokens = [token for token in tokens if len(token) >= 2 or token in keep_list]
验证结果
运行后filtered_tokens的结果为:
['want', 'to', 'learn', 'coding', 'in', 'r', 'and', 'c++', 'today', 'and', 'then', "'ll", 'be', 'learning', 'c#', 'and', 'c']
原列表中长度小于2且不在保留列表的'I'和','被移除,'r'、'c'、'c#'这类符合保留规则的元素全部保留。
逻辑说明
列表推导式里的条件len(token) >= 2 or token in keep_list同时覆盖两个筛选规则:
- 令牌长度≥2时直接保留
- 令牌在指定的
keep_list中时,无论长度多少都保留
这样就通过一行代码完成了所有筛选需求。
内容的提问来源于stack exchange,提问作者aRedDish
相关产品推荐
相关产品推荐

