python - Sort&独特与套装

时间:2016-06-29 09:52:57

标签: python python-2.7 sorting set unique

在python 2.7中,为了从冗余的字符串列表中检索一组唯一字符串,首选(〜1000万字符串长度~20):

a)对列表进行排序并删除重复的字符串

sort(l)
unique(l) #some linear time function

b)将它们全部置于一组

set(l)

请注意,我不关心字符串的顺序。

1 个答案:

答案 0 :(得分:3)

我做了一个简单的测试来检查两种解决方案的运行时间。第一个测试创建set,第二个测试对列表进行排序(为简单起见,它不会删除重复项)。

正如所料,创建一个集合比排序要快得多,因为它的复杂性为O(n),而排序为O(nlogn)

import random
import string
import time


def random_str():
    size = random.randint(10, 20)
    chars = string.ascii_letters + string.digits
    return ''.join(random.choice(chars) for _ in range(size))


l = [random_str() for _ in xrange(1000000)]

t1 = time.clock()
for i in range(10):
    set(l)
t2 = time.clock()
print(round(t2-t1, 3))

t1 = time.clock()
for i in range(10):
    sorted(l)
t2 = time.clock()
print(round(t2-t1, 3))

我得到的输出:

2.77
11.83