如何去除Python列表中大小写不同的重复元素
Python 列表大小写不敏感去重解决方案
你的原有代码仅做精确字符串匹配,因此大小写不同的重复元素会被识别为不同值。你可以通过统一转为小写/大写做匹配判断实现需求,同时支持保留首次出现元素的原有大小写格式。
方案1:遍历+辅助集合(最优,兼容所有Python版本,时间复杂度O(n))
使用集合存储已经出现过的小写字符串,遍历过程中判断后留存符合要求的元素:
li = ['Peter', 'PETER', 'peter', 'John', 'JOHN', 'Mary'] seen = set() out = [] for item in li: item_lower = item.lower() if item_lower not in seen: seen.add(item_lower) out.append(item)
执行后out的结果为['Peter', 'John', 'Mary'],完全符合预期。
注意:你原有的[out.append(x) for x in li if x not in out]写法属于利用列表推导式的副作用操作,会生成无意义的None元素列表浪费内存,属于不推荐的编码实践,建议用显式循环替代。
方案2:字典推导式(Python 3.7+支持顺序保留)
Python 3.7及以上版本字典默认保留插入顺序,可以通过字典键天然去重的特性简化写法:
out = list({item.lower(): item for item in li}.values())
该写法效果和方案1完全一致,代码更简洁。
内容的提问来源于stack exchange,提问作者Stanislav Jirak
相关产品推荐
相关产品推荐

