Pythonicly从可哈希元素的列表中消除重复项

8 浏览
0 Comments

Pythonicly从可哈希元素的列表中消除重复项

我刚想到了使用以下代码来从mylist中删除所有重复的条目:

mylist = list(set(mylist))

然而,链式调用内置函数总是让人感觉有点巧妙。我想知道,从列表中消除重复项的(最)Pythonic/禅的方式是什么?

在搜索过程中,我发现了上述构造作为一个“消除重复项”问题的答案在stackoverflow上。没有人说这是一个坏主意,但这只是暗示了一个答案,显式总比隐式好。

上述构造是从列表(可哈希元素)中消除重复项的方式吗?

如果不是,那是什么?

0
0 Comments

本文讨论了如何使用Pythonic方式从可哈希元素的列表中消除重复项,并提供了解决方法。

Pythonic的特点之一就是简洁明了,这正是下面这段代码所做的:

uniq = list(set(dups))

将一个列表转换为集合,由于集合只包含唯一值,因此可以去除重复项,然后再将其转换回列表。使用内置函数链接来实现一个目标并不是一种取巧的方式,而是简洁优雅的方式。它不依赖于任何模块或库,每个操作都清晰明了,意图也很容易理解。可以说,这是一个正确的解决方法。

这种集合的特性可以被认为是“隐式”的。这实际上是我提出这个问题的原因。但也许最近我过度使用pylint了...

为什么说是隐式的呢?你明确地创建了一个集合,而且众所周知,集合被定义为不包含重复项的(即如果向集合中添加一个已经存在的元素,集合将不会被修改)。

解决方法:

使用集合的特性可以很方便地消除重复项。只需将列表转换为集合,然后再转换回列表即可。代码如下:

uniq = list(set(dups))

这段代码简洁明了,不依赖于任何模块或库,每个操作的意图也很清晰。这是Pythonic的解决方法。

0