我有一个列表,正试图从中删除重复项。我使用的是Python2.7.1,因此可以简单地使用set()函数。不过,这会重新排列我的列表。这对我来说是不可接受的。
下面是我编写的一个函数;它可以实现这一点。不过,我想知道是否有更好/更快的方法。如有任何意见,将不胜感激。
def ordered_set(list_):
newlist = []
lastitem = None
for item in list_:
if item != lastitem:
newlist.append(item)
lastitem = item
return newlist
上面的函数假设没有一个项是无,并且这些项是有序的(即,['a'、'a'、'b'、'b'、'c'、'd'])
上述函数返回['a'、'a'、'a'、'b'、'b'、'c'、'd']为['a'、'b'、'c'、'd']。
另一种非常快速的set方法:
使用订购的信息:
假设输入序列是无序的,这里有
O(N)
解(在空间和时间上)。 它生成一个删除了重复项的序列,同时将唯一项保留为它们在输入序列中出现的相同相对顺序。相关问题 更多 >
编程相关推荐