python中list如何去除重复值
在Python中,有多种方法可以从列表中去除重复值。
·
在Python中,有多种方法可以从列表中去除重复值。以下是几种常见的方式:
方法1:使用 set()
set 是一个不包含重复元素的数据结构,因此可以通过将列表转换为 set 再转换回列表来去除重复值。
my_list = [1, 2, 2, 3, 4, 4, 5]
# 使用 set 去除重复值
unique_list = list(set(my_list))
print(unique_list) # 输出: [1, 2, 3, 4, 5]
注意:使用 set 会打乱原列表的顺序,因为 set 是无序的。如果你需要保留列表的顺序,请参考方法2或方法3。
方法2:使用循环判断
这种方法通过循环遍历原列表并构建一个新的列表,只添加未在新列表中出现过的元素。
my_list = [1, 2, 2, 3, 4, 4, 5]
# 使用列表推导去除重复值,保留顺序
unique_list = []
for item in my_list:
if item not in unique_list:
unique_list.append(item)
print(unique_list) # 输出: [1, 2, 3, 4, 5]
方法3:使用 dict.fromkeys()
在Python 3.7+中,dict 保持插入顺序,因此可以利用 dict 去重并保留顺序。
my_list = [1, 2, 2, 3, 4, 4, 5]
# 使用 dict.fromkeys 去除重复值并保留顺序
unique_list = list(dict.fromkeys(my_list))
print(unique_list) # 输出: [1, 2, 3, 4, 5]
方法4:使用 collections.OrderedDict
在Python 3.7+中,普通的 dict 已经保持插入顺序,但是如果你使用的是更旧的Python版本,可以使用 OrderedDict 来保留顺序。
from collections import OrderedDict
my_list = [1, 2, 2, 3, 4, 4, 5]
# 使用 OrderedDict 去除重复值并保留顺序
unique_list = list(OrderedDict.fromkeys(my_list))
print(unique_list) # 输出: [1, 2, 3, 4, 5]
方法5:使用列表推导
这种方法跟方法二类似,只是使用了列表推导式。
lst = [1, 2, 3, 2, 4, 3, 5]
lst = [x for i, x in enumerate(lst) if x not in lst[:i]]
print(lst)
说明:
保持顺序:方法2、方法3、和方法4都保留了原始列表的顺序,适合在顺序重要的情况下使用。
效率:如果不需要保持顺序,使用 set 是最快的方式。如果需要保持顺序,dict.fromkeys() 是一种简洁且高效的方法。
选择合适的方法取决于你的具体需求,例如是否需要保留顺序或者是否对性能有要求。
更多推荐
所有评论(0)