1

次のコードでは:

chars = set('AEIOU')
...
if any((cc in chars) for cc in name[ii]):
    print 'Found'

「(ccinchars)」の部分は何ですか?forループによって生成される各ccに適用されることを私は知っています。しかし、「(cc in chars)」はそれ自体がジェネレータ式を構成しているのでしょうか。

ありがとう。

4

3 に答える 3

3

いいえ、その(cc in chars)部分はブール式です。はシーケンスのメンバーであるかどうかをテストinするシーケンス演算子です。括弧は実際には冗長であり、省略できます。ccchars

于 2012-07-26T17:17:29.507 に答える
3

(cc in chars)cc文字列がに含まれているかどうかをチェックし、ブール値またはcharsを返します。falsetrue

Python言語リファレンスによると、括弧の間にあるものは、少なくとも1つのfor i in iterable句がない限り、ジェネレーター式ではありません。

于 2012-07-26T17:18:17.290 に答える
1

いいえ、これ(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]の各要素/文字について、文字である場合にのみ追加します。明確にするために、この回答を確認してください。

于 2012-07-26T17:22:17.960 に答える