在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() 是一种简洁且高效的方法。
选择合适的方法取决于你的具体需求,例如是否需要保留顺序或者是否对性能有要求。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐