为什么这个生成器表达式会引发语法错误?
Why does this generator expression raise a syntax error?
这一行抛出一个错误,指出我没有定义 x
,即使我声明 x
是列表的一个元素:
any(i.isdigit() for i in x for x in [name.id for name in all.names])
所以 x
是列表的一个字符串元素,我正在检查每个元素 x
中的某些字符,该元素 x
是否包含一个数字 [=16] =].这怎么行不通?
Comprehensions/generator Python 中的表达式从左到右嵌套(是的,这可能有点混乱)。交换它们:
for x in [name.id for name in all.names] for i in x
或为了清楚起见分开:
def contains_digit(s):
return any(c.isdigit() for c in s)
any(contains_digit(name.id) for name in all.names)
这一行抛出一个错误,指出我没有定义 x
,即使我声明 x
是列表的一个元素:
any(i.isdigit() for i in x for x in [name.id for name in all.names])
所以 x
是列表的一个字符串元素,我正在检查每个元素 x
中的某些字符,该元素 x
是否包含一个数字 [=16] =].这怎么行不通?
Comprehensions/generator Python 中的表达式从左到右嵌套(是的,这可能有点混乱)。交换它们:
for x in [name.id for name in all.names] for i in x
或为了清楚起见分开:
def contains_digit(s):
return any(c.isdigit() for c in s)
any(contains_digit(name.id) for name in all.names)