приблизительное время, необходимое для сравнения строк Python - PullRequest
0 голосов
/ 30 июля 2011

У меня есть строка, назовите ее абзац , которая содержит около 50-100 слов, разделенных пробелами.У меня есть массив из 5500 строк длиной всего 3-5 символов.Что я хочу сделать, так это проверить каждое слово в абзаце и посмотреть, содержится ли какое-либо из этих слов в моем массиве из 5500 строк.

Кто-нибудь имеет приблизительную оценку времени егобы сделать, чтобы сделать еще раз в Python?я хочу проверить каждое слово в параграфе по отношению к массиву

Я, вероятно, все равно в конечном итоге напишу код, так как думаю, что обработка не займет слишком много времени.

Если этот вопросслишком ленив ... как найти время вычисления для Python в простом примере строки, подобном этому?

Ответы [ 2 ]

3 голосов
/ 30 июля 2011

Я бы преобразовал ваш массив из 5500 строк в набор и просто использовал бы пересечение наборов.

>>> paragraph = "five hundred to one hundred words separated by spaces"
>>> array_of_strings = set(['hundred', 'spaces', ])  # make a set..

>>> print set(paragraph.split()).intersection(array_of_strings)
set(['hundred', 'spaces'])

Вот как вы рассчитываете время.

Прочтите о timeit *Модуль 1007 *.Вот еще один урок: http://diveintopython.net/performance_tuning/timeit.html

import timeit
s = """paragraph = "five hundred to one hundred words separated by spaces"
array_of_strings = set(['hundred', 'spaces', ])  # make a set..

set(paragraph.split()).intersection(array_of_strings)
"""
t = timeit.Timer(stmt=s)
print "%.2f usec/pass" % (1000000 * t.timeit(number=100000)/100000)
1 голос
/ 30 июля 2011

Если вы используете список, сначала отсортируйте его и используйте бинарный поиск.

Но, вероятно, было бы лучше использовать словарь;)

import time

def timeo(fun, n=1000): 
    def void(  ): pass 
    start = time.clock(  ) 
    for i in range(n): void(  ) 
    stend = time.clock(  ) 
    overhead = stend - start 
    start = time.clock(  ) 
    for i in range(n): fun(  ) 
    stend = time.clock(  ) 
    fulltime = stend-start 
    return fun.__name__, fulltime-overhead 

for f in solution1, solution2, solution3:
    print "%s: %.2f" % timeo(f)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...