我有一个排序的整数列表。但是我想删除副本,所以我使用了内置的set函数,期望它不会改变位置,而只是删除重复的位置。
它使我从排序列表中改变了负数的位置!
若要从排序列表中删除副本,请执行以下操作!我尝试了内建集来移除重复项,但最终改变了负整数的位置。
lis=[0,-1,,-1,3,3,1,10]
lis.sort()
l=set(lis)
print(l)
我预期的答案是-1,0-1,3,但实际输出是0,1,3,-1。
发布于 2019-07-15 12:13:55
集合是一个无序集合,因此它将更改顺序。
集合是一个无序集合,不记录元素位置或插入顺序。
https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset
若要对列表进行排序并删除重复项,请尝试
l = sorted(set(lis))
发布于 2019-07-15 12:19:24
set数据类型是无序的数据结构,而list是有序的。元素的顺序在一个集合中总是会改变的。要从列表中删除重复项,可以编写函数并通过它运行列表。下面的函数应该这样做。
def remove_duplicates(a):
t = []
for i in a:
if i not in t:
t.append(i)
return t
lis=remove_duplicates(lis)
https://stackoverflow.com/questions/57046561
复制