Python如何实现单列表去重时同步删除另一列表同索引元素
关联列表同步去重实现方案
核心要保证两个列表的索引对应关系不混乱,去重时保留词汇首次出现的条目,丢弃后续重复词汇的同时同步丢弃对应位置的类型值,最稳妥的实现是遍历生成新列表,避免直接修改原列表导致的索引错位问题。
实现代码
# 原始输入数据 words = ['fish', 'Robert', 'dog', 'ball', 'cat', 'dog', 'Robert'] word_types = ['animal', 'person', 'animal', 'object', 'animal', 'animal', 'person'] seen_words = set() unique_words = [] unique_types = [] # 同步遍历两个列表,按配对处理元素 for word, typ in zip(words, word_types): if word not in seen_words: seen_words.add(word) unique_words.append(word) unique_types.append(typ)
运行后得到的结果完全符合预期:
unique_words值为['fish', 'Robert', 'dog', 'ball', 'cat']unique_types值为['animal', 'person', 'animal', 'object', 'animal']
注意事项
不要在遍历原列表的过程中直接通过索引删除元素,删除操作会改变列表长度,后续元素的索引会整体前移,非常容易出现删错位置、漏处理元素的问题。上面的一次遍历生成新结果的写法时间复杂度为O(n),逻辑简单不容易出错。
内容的提问来源于stack exchange,提问作者ianux22
相关产品推荐
相关产品推荐

