私は、多数の単語を取り、各単語を文字に分割し、それらを大きなリストに結びつけるループを持っています。発生ループの実行時間の短縮と効率の向上
list[0]
=手紙:
私は、ほとんどが発生し、文字をチェックし、それがすでに文字列に表示されていない場合、私は2つのスペースがあり、リストに保存しますこのループは超非効率的である
の発生回数を最も
list[1]
を=。それは動作しますが、値を返すのに約25〜30秒かかります。その前にはそれは続行し、値を返さないでしょう。
私が書いたコードの効率を上げるにはどうすればよいですか?
def choose_letter(words, pattern):
list_of_letters = []
first_letter = [] # first spot is the letter, second is how many times it appears
second_letter =[] # first spot is letter, second how many times it appears
max_appearances = ["letter", 0]
for i in range(len(words)): # splits up every word into letters
list_of_letters.append(list(words[i]))
list_of_letters = sum(list_of_letters, []) # concatenates the lists within the list
first_letter = list_of_letters.count(0)
for j in list_of_letters:
second_letter = list_of_letters.count(j)
if second_letter >= max_appearances[1] and j not in pattern:
max_appearances[0] = j
max_appearances[1] = second_letter
else:
list_of_letters.remove(j)
return max_appearances[0]
これは、http://codereview.stackexchange.com/ – Blorgbeard
のより良い候補かもしれません。そして、codereviewに移動すると、あなたはこのコードに対して実行したプロファイラの出力を見るように求められます。 –
['collections.Counter'](https://docs.python.org/3.5/library/collections.html#collections.Counter)のジョブのようです。 – bereal