如何在 Python 中查找列表中的重复数据

Rayven Esplanada 2023年1月30日
  1. 使用 set() 函数删除 Python 列表中的重复内容
  2. 使用 iteration_utils 模块来查找 Python 列表中的重复项
如何在 Python 中查找列表中的重复数据

本教程将介绍如何在 Python 中查找列表中的重复内容。

使用 set() 函数删除 Python 列表中的重复内容

Python set() 是一个将列表转换为集合的函数。根据对集合和列表的描述,将一个列表转换为集合意味着删除列表中所有重复的元素。

然而,我们想要的是搜索列表中重复项。要做到这一点,我们仍然使用 set() 函数,但我们只包括那些在列表中拥有多个元素的元素,这意味着它们是有重复的元素。

  • 声明一个函数,在一个列表中寻找重复的元素,并将它们存储为一个集合。
def listToSet(listNums):
    set([num for num in listNums if listNums.count(x) > 1])
  • 另一种方法,如果你想把结果保留为一个列表而不是一个集合,则使用 set()add() 在列表中寻找重复的元素,并在返回时重新将其转换为一个列表。
def list_duplicates(listNums):
    once = set()
    seenOnce = once.add
    twice = set(num for num in listNums if num in once or seenOnce(x))
    return list(twice)

如果这个数字是第一次出现,并且在集合 once 内不存在,那么这个函数就会把元素添加到 once 中。

两个函数将返回相同的输出,尽管一个是集合,另一个是列表。结果将输出 listNums 中所有重复的元素。

[1, 3, 5, 8]

使用 iteration_utils 模块来查找 Python 列表中的重复项

iteration_utils 有两个函数可以在预定义函数中搜索重复的内容:duplicatesunique_everseen

我们将使用上面相同的列表定义 listNums

iteration_utils 中导入 duplicates,并使用它来返回 listNums 内所有重复的列表。

from iteration_utils import duplicates

listNums = [1, 1, 2, 3, 3, 4, 5, 5, 5, 5, 6, 8, 8]


def listDups(listNums):
    return list(duplicates(listNums))

上述函数的输出将返回一个包含 listNums 内所有重复元素的列表。

[1, 1, 3, 3, 5, 5, 5, 5, 8, 8]

虽然,这个列表还包括重复元素的迭代。这意味着它将返回重复元素的每个实例。

这就是 unique_everseen 的作用。这个函数对列表进行处理,删除 duplicates() 返回的所有重复的实例。

from iteration_utils import duplicates
from iteration_utils import unique_everseen

listNums = [1, 1, 2, 3, 3, 4, 5, 5, 5, 5, 6, 8, 8]


def listDupsUnique(listNums):
    return list(unique_everseen(duplicates(listNums)))

然后这个函数将返回以下结果。

[1, 3, 5, 8]

总而言之,在 Python 中,有两种简单的解决方案来查找列表中的重复实例。第一种是使用 set() 和其他 Python 中集合的实用函数来查找重复的内容,并将它们存储在另一个变量中。另一种是通过 iteration_utils 模块,使用 duplicatesunique_everseen,这或多或少地做了同样的事情,产生了同样的输出。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

相关文章 - Python List