尝试用生成器表达式理解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,你明白什么是列表理解吗?好的,我现在明白了。这是一个带方括号的列表理解。谢谢你的编辑和提示。你想知道单词中哪些字符是元音吗?你想知道单词中哪些字符是元音吗?谢谢,非常感谢对生成器表达式的解释。谢谢,非常感谢对生成器表达式的解释。令人惊讶的是,尝试了不带括号的方法,你是对的,它们是不需要的。谢谢。令人惊讶的是,尝试了不带括号的方法,你是对的,它们是不需要的。谢谢。