LINUX.ORG.RU

История изменений

Исправление AntonI, (текущая версия) :

Нет.

ЗЫ. Небольшой пример - найти число разных чисел в случайной последовательности.

#!/usr/bin/python2
# repeat-list.py

import random, time
L, t0 = [], time.time()

for i in xrange(10000):
    x = random.randint(0,10000)
    if not x in L: L.append(x)

print len(L), time.time()-t0
$ ./repeat-list.py 
6354 1.04331302643
#!/usr/bin/python2
#repeat-set.py

import random, time
S, t0 = set(), time.time()

for i in xrange(10000):
    x = random.randint(0,10000)
    S.add(x)

print len(S), time.time()-t0

$ ./repeat-set.py 
6303 0.0589830875397

Даже на такой небольшой последовательности по производительности разница в 20 раз. Потому что у первого решения сложность O(N^2), а у второго O(N log(N)). Добро пожаловать в увлекательный мир алгоритмов;-)

Исправление AntonI, :

Нет.

ЗЫ. Небольшой пример - найти число разных чисел в случайной последовательности.

#!/usr/bin/python2
# repeat-list.py

import random, time
L, t0 = [], time.time()

for i in xrange(10000):
    x = random.randint(0,10000)
    if not x in L: L.append(x)

print len(L), time.time()-t0
$ ./repeat-list.py 
6354 1.04331302643
#!/usr/bin/python2
#repeat-set.py

import random, time
S, t0 = set(), time.time()

for i in xrange(10000):
    x = random.randint(0,10000)
    S.add(x)

print len(S), time.time()-t0

$ ./repeat-set.py 
6303 0.0589830875397

По производительности разница в 20 раз.

Исходная версия AntonI, :

Нет.