저는 병합 알고리즘이 매우 빠릅니다 : 현재 목록 사이에 알려지지 않은 단어를 확인하도록 설정되어 있습니다. 이 함수는 일반적인 단어를 검사합니다. 단어가 vocab 또는 wds에 있는지 또는 함수를 제대로 이해하지 못했는지 확인하기 위해 함수를 변경해야합니다. 특정 줄의 내용에 대한 주석이 좋습니다.병합 정렬 알고리즘
DEF find_unknowns_merge_pattern (Vocab에서, WDS)
result = []
xi = 0
yi = 0
while True:
if xi >= len(vocab):
result.extend(wds[yi:])
return result
if yi >= len(wds):
return result
if vocab[xi] == wds[yi]: # Good, word exists in vocab
yi += 1
elif vocab[xi] < wds[yi]: # Move past this vocab word,
xi += 1
else: # Got word that is not in vocab
result.append(wds[yi])
yi += 1
데프 검사 (bigger_vocab, book_words)
both = [ ]
for words in bigger_vocab:
for people in book_words:
if words == people:
words.split()
both.append(words)
return both
문제 내 병합 알고리즘 0.08 걸리는 반면가 적어도 5 초 정도이다. 이 함수를 호출하여이 함수를 더 빠르게 만들 수있는 방법은 무엇입니까?
질문이 명확하지 않습니다. 귀하의 "병합 알고리즘"은 파이썬인가요? 'check()'의 목적은 무엇입니까? 병합 알고리즘을 호출하려고 시도한 이유는 무엇이며 작동하지 않는 이유는 무엇입니까? 'check()'를 원하는 출력과 실제 출력으로 호출하는 예제를 제공하십시오. 더 나은 질문을하려면 [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve)을 참조하십시오. –
예 파이썬에서 현재 무엇을하는지는 특정 목록에없는 단어를 반환합니다. 변경 방법을 모르기 때문에 작동하지 않습니다. –
여분의 혼란을 피하기 위해 4-8 줄을 줄입니다. 또한 "내 병합 알고리즘"에 대해서도 언급하고 있으므로 해당 코드도 공유하십시오. 마지막으로 몇 가지 실행 시간 테스트에 대해 이야기하고 있으므로 입력 한 내용을 보여주십시오 (설명 된 동작은 재현 가능해야 도움이됩니다). – YakovL