История изменений
Исправление 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, :
Нет.