我有一个整数的排序列表。 但是我想删除重复项,所以我使用了内置的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)