次のコードでは:
chars = set('AEIOU')
...
if any((cc in chars) for cc in name[ii]):
print 'Found'
「(ccinchars)」の部分は何ですか?forループによって生成される各ccに適用されることを私は知っています。しかし、「(cc in chars)」はそれ自体がジェネレータ式を構成しているのでしょうか。
ありがとう。
いいえ、その(cc in chars)
部分はブール式です。はシーケンスのメンバーであるかどうかをテストin
するシーケンス演算子です。括弧は実際には冗長であり、省略できます。cc
chars
(cc in chars)
cc
文字列がに含まれているかどうかをチェックし、ブール値またはchars
を返します。false
true
Python言語リファレンスによると、括弧の間にあるものは、少なくとも1つのfor i in iterable
句がない限り、ジェネレーター式ではありません。
いいえ、これ(cc in chars)
はccがcharsの場合はTrueを返し、それ以外の場合はFalseを返す単なるブール値です。
実際、コードは実際に書くことができます
chars = set('AEIOU')
...
if [cc for cc in name[ii] if cc in chars]:
print 'Found'
その場合、リストに要素が含まれていると(if句を通過させる)、それは一部のccがcharに含まれているためです。私は実際にそれがより読みやすくて簡単であると思います。乾杯。
編集:
私の答えを明確にするために、[cc for cc in name[ii] if cc in chars]
name [ii]の'chars'(この場合は母音)のすべての文字のリストを生成します。このリストに要素が含まれている場合は、if-testに合格します。
[cc for cc in name[ii] if cc in chars]
「name[ii]の各要素/文字について、文字である場合にのみ追加します。明確にするために、この回答を確認してください。