如果有一个整数的排序列表,那么如果我使用 Python 中的内置 set 函数来删除重复项,它会改变元素的顺序.为什么



我有一个整数的排序列表。 但是我想删除重复项,所以我使用了内置的set函数,期望它不会改变位置,而只是删除重复项。

它导致我从排序列表中更改了负整数的位置!

从排序列表中删除重复项!我尝试过内置集来删除重复项,但最终更改了负整数的位置

lis=[0,-1,,-1,3,3,1,10]
lis.sort()
l=set(lis)
print(l)

我期望的答案是 [-1,0,1,3],但实际输出是 [0,1,3,-1]。

集合是一个无序集合,因此它将更改顺序。

作为无序集合,集合不记录元素位置或插入顺序。

https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset

要对列表进行排序并删除重复项,请尝试

l = sorted(set(lis))

set 数据类型是无序数据结构,而列表是有序的。元素的顺序将始终在一个集合中更改。要从列表中删除重复项,您可以编写一个函数并通过它运行列表。以下函数应该可以做到这一点。

    def remove_duplicates(a):
            t = []
            for i in a:
                    if i not in t:
                    t.append(i)
            return t 
    lis=remove_duplicates(lis)

相关内容

最新更新