0

単語リストがあります。かなり大きいです (len(list) ~ 70,000)。私は現在このコードを使用しています:

replacement = "bla"
for word in data:
    if (word in unique_words):
        word = replacement

このコードは、操作の実行に時間がかかります。これを行うより速い方法はありますか?

4

2 に答える 2

6

setに aを使用しunique_wordsます。セットは、アイテムがリストに含まれているかどうかを判断するのにリストよりもかなり高速です ( Python セットとリストを参照してください)。

また、これは文体の問題にすぎませんが、if. よりきれいに見えます。

于 2012-05-26T13:11:42.590 に答える
4

あなたが投稿したコードは、実際には置き換えを行いません。以下はスニペットです。

for key,word in enumerate(data):
   if word in unique_words:
       data[key] = replacement

よりコンパクトな方法は次のとおりです。

new_list = [replacement if word in unique_words else word for word in big_list]

unique_words変数の用途を考えると変な名前だと思いますが、おそらくそうあるべきsearch_listでしょうか?

編集

あなたのコメントの後、おそらくこれはより良いです:

from collections import Counter
c = Counter(data)
only_once = [k for k,v in c.iteritems() if v == 1]

# Now replace all occurances of these words with something else

for k, v in enumerate(data):
    if v in only_once:
        data[k] = replacement
于 2012-05-26T13:25:32.867 に答える