Python 列表去重

在 Python 中,如果想要实现列表去重,常用的有以下 3 种方式。

  • 使用 “循环 + 判断”。
  • 使用 set() 函数。
  • 使用 dict.fromkeys()。

使用 “循环 + 判断” 实现列表去重

Python 实现列表去重,传统方式就是使用 “for 循环 + if 判断” 来实现。

示例 1:传统方式实现列表去重

items = ['red', 'red', 1, 1, 2, False]
result = []

for item in items:
    if item not in result:
        result.append(item)

print(result)

运行结果如下。

['red', 1, 2, False]

分析:

在上面示例中,首先我们定义了一个空列表 result 用于保存结果。接下来遍历列表 items,如果当前元素不存在于 result 中,那么就把当前元素添加到 result 中。最后得到的 result 就是去重的列表了。

使用 set() 函数实现列表去重

在 Python 中,集合不会出现相同的值,如果有相同的值,则只会保留一个。利用集合的这个特点,我们也可以实现列表去重。

示例 2:使用 set() 函数

items_list = ['red', 'red', 1, 1, 2, False]
items_set = set(items_list)
result = list(items_set)
print(result)

运行结果如下。

['red', 1, 2, False]

分析:

set() 函数可以将一个列表转换为一个集合,set(items_list) 的结果就是:{'red', 1, 2, False}。然后再使用 list() 函数来将一个集合转换为一个列表。对于这个例子来说,我们甚至只需要用到两句代码就可以实现了。

items_list = ['red', 'red', 1, 1, 2, False]
print(list(set(items_list)))

使用 dict.fromkeys() 实现列表去重

如果你既想要代码简短,又想保留列表元素原有的顺序,最推荐的方式是使用 dict.fromkeys()。自 Python 3.7 开始,字典会记住键的插入顺序。

示例 3:使用 dict.fromkeys()

items_list = ['red', 'red', 1, 1, 2, False]
result = list(dict.fromkeys(items_list))
print(result)

运行结果如下。

['red', 1, 2, False]

分析:

dict.fromkeys(items_list) 会把列表中的元素作为字典的键生成一个新字典。因为字典的键是不允许重复的,所以自动去除了重复项。最后再使用 list() 函数将其转换回列表。

dict.fromkeys() 这种方式既优雅,又不会改变原有元素的顺序。

提示: 对于列表去重,如果你不在乎去重后的顺序,使用 set() 是最快的。如果你希望保留原来的顺序,应该优先使用 dict.fromkeys()。

上一篇: Python 列表切片

下一篇: Python 二维列表

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号