2017-11-30 8 views
1

私は文字列のリストと関数getVowelを持っています。
この関数は、文字列に存在する母音の数を返します。 サンプルコードです。文字列のリストから特定の文字列を取得する方法は?

s = "hello ,this is a string" 
no = getVowel(s) 
lis = [] 
lis.append(s) 

リストlisにn個の文字列がないとします。
どのようにして母音が最大の3つの文字列を得ることができますか?

+1

getVowel' 'の内容は何ですか? – Ajax1234

+0

質問には関係がありますか? –

+0

はい、 'getVowel'は母音の数を見つける作業をしているはずですから。 – Ajax1234

答えて

1

sorted(lis, key=lambda x:getVowel(x), reverse=True)[:3]

そのような何か。ちなみに、Pythonコードの規則に従って、関数の正しい名前はget_vowelでなければなりません。この回答に基づいて

+0

これは 'heapq.nlargest()'を(sorted()ではなく) –

+0

と議論する方が良いでしょう。 'heapq'は構造体に動的に要素を追加したい場合に適しています。パフォーマンス上の 'ソート済み'は 'heapq'よりも速くソートされます。 –

+0

「n」の値が小さい場合(ここではn = 3)、heapqはより良いです。つまり、この関数の全体的な点です。 –

0

sorted(lis, key=lambda x: getVowel(x), reverse=True)[:3] 

文書をソートだろう 最後の3つの要素を逆転させるのではなくsortedのリストから取り除き、最初の3つをとする方が効率的です。ようにこの、[-3:]とだけインデックスを行うに

sorted(lis, key=lambda I: getVowel(i))[-3:] 
関連する問題