Python如何从嵌套列表子列表删除指定开头单词,解决AttributeError问题
错误原因
你的代码存在两个核心问题:
sublist[0:]返回的是整个子列表对象,startswith是字符串类型的方法,列表没有该方法,所以触发AttributeError: 'list' object has no attribute 'startswith'报错- 原逻辑没有遍历子列表内的每个单词元素,判断逻辑完全不匹配需求;同时直接在遍历列表时调用
pop删除元素会导致索引偏移,出现漏判元素的问题
修复代码
推荐用列表推导式重构子列表的方式实现过滤,逻辑清晰且不会有索引问题:
lists = [["abcd", "abc", "ab",'bbc'], ["abcd", "abc", "ab",'bc'], ["abcd", "abc", "ab"]] for index, sublist in enumerate(lists): # 保留规则:不是以a开头 或者 以abc开头的单词 lists[index] = [word for word in sublist if not word.startswith('a') or word.startswith('abc')] print(lists)
运行结果
输出和你期望的结果完全一致:[['abcd', 'abc', 'bbc'], ['abcd', 'abc', 'bc'], ['abcd', 'abc']]
内容的提问来源于stack exchange,提问作者Erwin Hidayat
相关产品推荐
相关产品推荐

