尝试用生成器表达式理解Python代码

尝试用生成器表达式理解Python代码,python,generator,Python,Generator,在以下代码中: chars = set('AEIOU') ... if any((cc in chars) for cc in name[ii]): print 'Found' “字符抄送”部分是什么?我知道它应用于for循环生成的每个cc。但是“(cc in chars)”构造本身是生成器表达式吗 谢谢。不,(字符抄送)部分是布尔表达式;测试cc是否是序列chars的成员。括号实际上是多余的,可以省略。不,(cc in chars)部分是一个布尔表达式;测试cc是否是序列chars的

在以下代码中:

chars = set('AEIOU')
...
if any((cc in chars) for cc in name[ii]):
    print 'Found'
“字符抄送”部分是什么?我知道它应用于for循环生成的每个cc。但是“(cc in chars)”构造本身是生成器表达式吗

谢谢。

不,
(字符抄送)
部分是布尔表达式;测试
cc
是否是序列
chars
的成员。括号实际上是多余的,可以省略。

不,
(cc in chars)
部分是一个布尔表达式;测试
cc
是否是序列
chars
的成员。括号实际上是多余的,可以省略。

(字符中的cc)
只需检查字符串
cc
是否包含在
chars
中,并返回布尔值
false
true

根据,括号之间的内容不是生成器表达式,除非它在iterable子句中至少有一个i

(cc in chars)
只需检查字符串
cc
是否包含在
chars
中,并返回布尔值
false
true

根据,括号之间的内容不是生成器表达式,除非它在iterable
子句中至少有一个
for i。

否,
(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是chars。事实上,我会发现这更具可读性和直截了当。 干杯

编辑:

为了澄清我的答案,
[cc for cc in name[ii]if cc in chars]
生成名称[ii]中“chars”(在这种情况下是元音)中的所有字符的列表。如果此列表中有任何元素,它将通过If测试

[cc for cc in name[ii]if cc in chars]
表示“对于name[ii]中的每个元素/字符,仅当其在chars中时才添加。请查看答案以获得澄清。

否,
(cc in chars)
仅是一个布尔值,如果cc in chars,则返回True,否则返回False

事实上,代码实际上是可以编写的

chars = set('AEIOU')
...
if [cc for cc in name[ii] if cc in chars]:
    print 'Found'
在这种情况下,如果列表中有任何元素(使其通过if子句),那是因为某些cc是chars格式的。事实上,我会发现这更具可读性和直观性。 干杯

编辑:

为了澄清我的答案,
[cc for cc in name[ii]if cc in chars]
生成名称[ii]中“chars”(在这种情况下是元音)中的所有字符的列表。如果该列表中有任何元素,它将通过if测试


[cc for cc in name[ii]如果cc in chars]
说“对于名称[ii]中的每个元素/字符,仅当它在chars中时才添加它。查看答案以获得澄清。

FRD,我测试了您的代码,是的,它可以工作,但我不明白如何工作:(Sabuncu,你明白什么是列表理解吗?好的,我现在明白了。这是一个带方括号的列表理解。谢谢你的编辑和提示。FRD,我测试了你的代码,是的,它可以工作,但我不明白如何工作。)(Sabuncu,你明白什么是列表理解吗?好的,我现在明白了。这是一个带方括号的列表理解。谢谢你的编辑和提示。你想知道单词中哪些字符是元音吗?你想知道单词中哪些字符是元音吗?谢谢,非常感谢对生成器表达式的解释。谢谢,非常感谢对生成器表达式的解释。令人惊讶的是,尝试了不带括号的方法,你是对的,它们是不需要的。谢谢。令人惊讶的是,尝试了不带括号的方法,你是对的,它们是不需要的。谢谢。