以下内容:
name = 'TODD'
chars = set('AEIOU')
for ii in range(-1, int(math.copysign(len(name) + 1, -1)), -1):
if any((cc in chars) for cc in name[ii]):
print 'Found'
else:
print 'Not Found'
我明白任何(...)里面的东西都是生成器对象。我不明白的是缺少括号 - 如果括号属于any()函数,那么生成器表达式周围是否应该有另一组括号?
感谢。
答案 0 :(得分:12)
当在只有一个参数的函数调用中使用时,可以省略括号,generator expression syntax专门允许它。
只有一个参数的调用可以省略括号。有关详细信息,请参阅Calls部分。
答案 1 :(得分:2)
答案 2 :(得分:2)
不,不需要额外的parens,实际上也不是你正在测试的“布尔表达式”所必需的parens,请看这两个简单的例子:
In [37]: any(i > 10 for i in range(19))
Out[37]: True
In [38]: all(i > 10 for i in range(19))
Out[38]: False
你所拥有的是一个带有单个参数的函数调用(你的生成器表达式),所以不需要parens。有关详细信息,请参阅generator expressions docs。
答案 3 :(得分:1)
对于只有一个参数(生成器表达式)的函数调用,docs不需要它们
只有一个参数的调用可以省略括号。请参阅电话详细信息部分。