Python如何删除列表中包含指定部分字符串(如Sheet)的元素
错误写法问题分析
- 你写的第一种
filter方案,仅匹配前缀4位等于Sheet的元素,在你给出的示例场景下其实可以正常输出结果,但适配性很差:如果后续出现Sheet在字符串中间的元素,就会被遗漏,不推荐用截取前缀的方式判断。 - 第二种写法错误非常明显:
- 你调用了
ss.replace,但ss是列表类型,本身没有replace方法,代码运行会直接报错 - 你用大括号
{}包裹表达式,生成的是集合类型,会自动打乱原有列表的顺序,还会删除重复元素,完全不符合列表的需求 - 逻辑完全走偏:你需要的是删除整个包含
Sheet的元素,而不是把元素内部的Sheet字符串替换为空
- 你调用了
正确实现方案
最简洁易读的是用列表推导式实现,完全匹配你的需求:
newss = [item for item in ss if 'Sheet' not in item]
如果偏好filter的写法,可以调整为适配所有包含Sheet场景的版本:
newss = list(filter(lambda s: 'Sheet' not in s, ss))
两种方案都会保留所有不包含Sheet字符串的元素,且严格保持原列表的顺序,输出你期望的结果。
内容的提问来源于stack exchange,提问作者user2100039
相关产品推荐
相关产品推荐

