2017-03-28 20 views
3

私は単語リストを使ってプロジェクトをやっています。私は2つの単語リストを結合したいが、ユニークな単語だけを保存する。Python:大きなリストではないものよりも速いものはありますか?

ファイルから単語を読み取っていますが、ファイルを読み込んでリストに格納するのに時間がかかるようです。私は、同じコードブロックをコピーし、2番目(またはそれ以降の)のワードファイルを使用して実行するつもりです。私が間違っている場合

while inLine!= "": 
     inLine = inLine.strip() 
     if inLine not in inList: 
      inList.append(inLine) 
     inLine = inFile.readline() 

が私を修正してください、私はプログラムの遅い(EST)の部分が比較「ではない」だと思う:コードの遅い部分はこのようになります。私はこれを書き直してより速くする方法は何ですか?

if inLine not in inList: 
    inList.append(inLine) 

あなたはinListコンテナ内の一意性を強制しているように見えます:この行から判断

+6

変換 'inList'を。 –

+1

[リストの複製を削除する]の可能な複製(http://stackoverflow.com/questions/7961363/removing-duplicates-in-lists);答えには元のリスト順序オプションを保持している場合としない場合があります –

答えて

6

inSetなど、より効率的なデータ構造を使用することを検討する必要があります。とにかくコンテナによって重複が防止されるので、not inチェックは冗長として破棄することができます。

挿入順序を保持する必要がある場合は、ヌル値のOrderedDictを使用すると同様の結果が得られます。

+0

この場合、集合を使用する主な利点を追加する必要があります。O(n)からO(1) – L3viathan

0

次の2つのリストを結合し、重複を削除したい場合は、このような何かを試みることができる: ``(..)をセットに

combined_list = list(set(first_list) | set(second_list)) 
関連する問題