Python 从列表中删除所有重复项-不保留重复项的实例

Python 从列表中删除所有重复项-不保留重复项的实例,python,list,set,duplicates,duplicate-removal,Python,List,Set,Duplicates,Duplicate Removal,我有一张单子: myList = [-3, -3, 6, 10, 10, 16, 16, 40, 40, 60, 60, 100, 100, 140, 140, 211, -8] 如何有效地从中删除所有重复项,即创建如下新列表: [6,211,-8] 我知道一种方法,跟踪重复的项,然后使用pythonset()删除它们,即 在python中有没有更好的方法来实现这一点(保持顺序)?最好的方法是反转条件,如下所示 注意:此方法将无法维持元素的顺序。例如,当 myList = [1, 1000,

我有一张单子:

myList = [-3, -3, 6, 10, 10, 16, 16, 40, 40, 60, 60, 100, 100, 140, 140, 211, -8]
如何有效地从中删除所有重复项,即创建如下新列表:

[6,211,-8]
我知道一种方法,跟踪重复的项,然后使用pythonset()删除它们,即


在python中有没有更好的方法来实现这一点(保持顺序)?

最好的方法是反转条件,如下所示

注意:此方法将无法维持元素的顺序。例如,当

myList = [1, 1000, 10]
结果是

[1000, 1, 10]
因为
collections.Counter
在内部只是一个字典。由于字典使用哈希,因此无法保证顺序

为了保持秩序,您可以这样做,如下所示


最好的方法是反转条件,如图所示

注意:此方法将无法维持元素的顺序。例如,当

myList = [1, 1000, 10]
结果是

[1000, 1, 10]
因为
collections.Counter
在内部只是一个字典。由于字典使用哈希,因此无法保证顺序

为了保持秩序,您可以这样做,如下所示


myList=[-3、-3、6、10、10、16、16、40、40、60、60、100、100、140、140、211、-8]

b=[]

d=[]

对于myList中的x:

  try:
      w=b.index(x)
      if w!=None:
           d.append(x)
           del b[w]
  except:
       b.append(x)
b=组(b)-组(d)

打印列表(b)


这也不会保持秩序

myList=[-3、-3、6、10、10、16、16、40、40、60、60、100、100、140、140、211、-8]

b=[]

d=[]

对于myList中的x:

  try:
      w=b.index(x)
      if w!=None:
           d.append(x)
           del b[w]
  except:
       b.append(x)
b=组(b)-组(d)

打印列表(b)


这也不会保持秩序

将该>转过来,并丢弃第二行。或者首先使用一个集合。@JonathonReinhart你的意思是
=
,对吗?;)@是的,对不起,德摩根:-)忽略我评论中的“或使用集合”部分;我误解了问题陈述。然而,第一部分仍然站着。把>转过来,丢掉第二行。或者首先使用一个集合。@JonathonReinhart你的意思是
=
,对吗?;)@是的,对不起,德摩根:-)忽略我评论中的“或使用集合”部分;我误解了问题陈述。然而,第一部分仍然有效,如果你想保持秩序,你可以做
c=Counter(myList);如果c[x]==1]
或其他什么,nd=[x代表myList中的x。如果您想保持顺序,可以执行
c=Counter(myList);如果c[x]==1]
或其他什么,则nd=[x代表myList中的x。