检查python中的列表中是否已存在数字

Pho*_*One 29 python list

我正在编写一个python代码,我将把数字附加到列表中,但我不希望列表中的数字重复.那么在我做之前,如何检查列表中是否已有数字list.append()

rap*_*ard 64

你可以做到

if item not in mylist:
     mylist.append(item)
Run Code Online (Sandbox Code Playgroud)

但你真的应该使用一个集合,如下所示:

myset = set()
myset.add(item)
Run Code Online (Sandbox Code Playgroud)

编辑:如果订单很重要,但你的列表非常大,你应该使用列表集合,如下所示:

mylist = []
myset = set()
for item in ...:
    if item not in myset:
        mylist.append(item)
        myset.add(item)
Run Code Online (Sandbox Code Playgroud)

这样,您可以快速查找元素存在,但是您可以保持订购.如果您使用天真的解决方案,您将获得查找的O(n)性能,如果您的列表很大,这可能会很糟糕

或者,正如@larsman指出的那样,你可以使用OrderedDict来达到同样的效果:

from collections import OrderedDict

mydict = OrderedDict()
for item in ...:
    mydict[item] = True
Run Code Online (Sandbox Code Playgroud)

  • 在Python> = 2.7中,带有'True`作为值的`OrderedDict`也可以工作. (5认同)

Roh*_*ain 7

如果您想在列表中包含唯一元素,那么为什么不使用集合,如果顺序对您无关紧要: -

>>> s = set()
>>> s.add(2)
>>> s.add(4)
>>> s.add(5)
>>> s.add(2)
>>> s
39: set([2, 4, 5])
Run Code Online (Sandbox Code Playgroud)

如果订单是一个值得关注的问题,那么您可以使用: -

>>> def addUnique(l, num):
...     if num not in l:
...         l.append(num)
...     
...     return l
Run Code Online (Sandbox Code Playgroud)

您还可以找到Python文档中OrderedSet提到的配方