如何遍历元组列表的首个元素并删除包含指定关键词的对应元组
错误原因
原始代码失效的核心原因是遍历列表的同时直接删除列表元素:Python的for循环迭代列表时会按顺序读取索引,删除元素后列表长度变短,后续元素的索引会整体前移,导致部分元素被跳过未校验,自然无法全部删除符合条件的元组。
推荐实现方案
最简洁稳定的方式是使用列表推导式生成符合要求的新列表,完全规避修改原列表带来的索引异常问题:
# 保留短语中不包含blue、dark的元组 filtered_list = [item for item in Example if 'blue' not in item[0] and 'dark' not in item[0]]
原地修改原列表的方案
如果业务要求必须在原列表上修改而非生成新列表,可以选择倒序遍历的方式实现:倒序删除时,未遍历的前半部分元素索引不会受后半部分删除操作的影响,不会出现漏删问题。
# 从最后一个索引倒序遍历到第一个索引 for i in range(len(Example) - 1, -1, -1): phrase = Example[i][0] if 'blue' in phrase or 'dark' in phrase: del Example[i]
内容的提问来源于stack exchange,提问作者Enikő Várkonyi
相关产品推荐
相关产品推荐

