list comprehension
を使用して以下を達成する方法はありますか?それとも、これを達成するためにもっとPythonicな方法がありますか?リストの理解を使用してタスクを達成する方法
count = 0
x = 'uewoiquewqoiuinkcnsjk'
for letter in x:
if letter in ['a', 'e', 'i', 'o', 'u']:
count += 1
ベストプラクティスを習得しようとしていますか?
list comprehension
を使用して以下を達成する方法はありますか?それとも、これを達成するためにもっとPythonicな方法がありますか?リストの理解を使用してタスクを達成する方法
count = 0
x = 'uewoiquewqoiuinkcnsjk'
for letter in x:
if letter in ['a', 'e', 'i', 'o', 'u']:
count += 1
ベストプラクティスを習得しようとしていますか?
あなたは発電機でsum
を使用することができます0
1
としてTrue
またはFalse
とTrue
とFalse
can reliably be usedを生成し、:
sum(c in 'aeiou' for c in x)
またはフィルタ+ LEN:
len(filter(lambda c: c in 'aeiou', x))
すばらしいやり方彼反対は、文字列中の文字を削除するためにstr.translateを使用することです:
>>> x.translate(None, 'aeiou')
wqwqnkcnsjk
それではあなたが行うことができます。すべてのケースで
len(x)-len(x.translate(None, 'aeiou'))
、答えは10
list_comprehensionとlen関数の組み合わせを使用します。 in
以来
>>> x = 'uewoiquewqoiuinkcnsjk'
>>> len([i for i in x if i in 'aeiou'])
10
>>>
うわーこれです完璧です!ありがとう – mangodreamz
これも良いです!ありがとう、フィルタを使用すると思います – mangodreamz
'sum'はリストを作成しないのでいいです – zvone