Python列表去重:保留唯一元素并维持原有顺序的解决方案
解决列表去重并保留原有顺序的问题
嘿,这事儿好办!要实现对列表去重同时维持原有顺序,咱们可以用两种简洁高效的方法,刚好适配你给出的数字列表场景:
方法1:通用自定义函数(适用于所有Python版本)
写一个复用性强的函数,用集合来跟踪已出现的元素,遍历原列表时只保留首次出现的元素:
def deduplicate_preserve_order(lst): seen = set() result = [] for item in lst: if item not in seen: seen.add(item) result.append(item) return result # 处理你的三个列表 list_1 = [4.5, 4.5, 4, 4, 4, 5, 5, 5] list_2 = [6.5, 7, 7, 8, 8] list_3 = [14.5, 15, 15, 15.5] list_1 = deduplicate_preserve_order(list_1) list_2 = deduplicate_preserve_order(list_2) list_3 = deduplicate_preserve_order(list_3) print(list_1) # 输出: [4.5, 4, 5] print(list_2) # 输出: [6.5, 7, 8] print(list_3) # 输出: [14.5, 15, 15.5]
这个函数的逻辑很清晰:seen集合用来快速判断元素是否已经出现过(集合查询是O(1)时间复杂度,效率很高),遍历过程中只把首次出现的元素加入结果列表,完美满足你的需求。
方法2:利用Python 3.7+的字典特性(更简洁)
从Python 3.7开始,字典会保留插入顺序,所以咱们可以用dict.fromkeys()方法一键去重,它会自动把列表元素作为字典的键(键是唯一的),然后再转回列表即可:
list_1 = [4.5, 4.5, 4, 4, 4, 5, 5, 5] list_2 = [6.5, 7, 7, 8, 8] list_3 = [14.5, 15, 15, 15.5] list_1 = list(dict.fromkeys(list_1)) list_2 = list(dict.fromkeys(list_2)) list_3 = list(dict.fromkeys(list_3)) print(list_1) # 输出: [4.5, 4, 5] print(list_2) # 输出: [6.5, 7, 8] print(list_3) # 输出: [14.5, 15, 15.5]
这个方法代码更短,适合快速实现,而且你的列表元素都是可哈希的数字,完全适用。
内容的提问来源于stack exchange,提问作者max scender
相关产品推荐
相关产品推荐

