2016-09-11 7 views
-4

合併:現在のリストの間で未知語をチェックするように設定されていますが、この関数は一般的な単語をチェックし、以下の関数を変更して、単語がvocabまたはwdsにあるかどうかを確認する必要があります。また、関数を正しく理解していないため、は、私は本当に速いですマージアルゴリズム持っソートアルゴリズム

デフfind_unknowns_merge_pattern(単語、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秒かかります。どのように私はこの機能を呼び出すことで、これをより速くすることができますか?

+0

あなたの質問は明らかではありません。あなたの "マージアルゴリズム"はPythonでですか? 'check()'の目的は何ですか?何をあなたのマージアルゴリズムを呼び出そうとしましたか、それはなぜ機能していませんか? 'check()'を目的の出力と実際の出力で呼び出す例を挙げてください。より良い質問をするには、[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve)を参照してください。そのはpythonで、現在、それが何をするか、特定のリストにare'ntリターンの言葉で、私は余分な混乱を避けるために、ライン4-8をインデント解除してください –

+0

は、はい、それは働いていません。また、あなたは "私のマージアルゴリズム"について話しているので、そのコードも共有してください。最後に、いくつかの実行時間テストについて話しているので、試したインプットを示してください(説明された動作は、私たちが手助けするために再現可能でなければなりません)。 –

+0

それを変更する方法がわからないので、 – YakovL

答えて

0

あなただけbigger_vocabとbook_wordsに表示される単語を検索しようとしていますか?その場合:

both = list(set(bigger_vocab).intersection(book_words)) 
+0

o私はそれをして私の解決策が正しいと思いました!どちらのリストにも単語がないかどうかをチェックするために同様のことをすると思いますか? –

+0

彼らは私が新しい機能を書いていないマージ機能を変更する必要があると言いました –

関連する問題