我正在编写一个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)
如果您想在列表中包含唯一元素,那么为什么不使用集合,如果顺序对您无关紧要: -
>>> 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
提到的配方
归档时间: |
|
查看次数: |
124984 次 |
最近记录: |