Python 为什么此生成器表达式会引发语法错误?
这一行抛出一个错误,说我没有定义Python 为什么此生成器表达式会引发语法错误?,python,list,python-3.x,any,Python,List,Python 3.x,Any,这一行抛出一个错误,说我没有定义x,尽管我声明x是列表中的一个元素: any(i.isdigit() for i in x for x in [name.id for name in all.names]) 因此x是列表中的字符串元素,我正在检查每个元素x中是否有字符,该元素x是否包含一个使用.isdigit()的数字。这怎么不起作用呢?Python嵌套中从左到右的理解/生成器表达式(是的,可能有点混乱)。交换: for x in [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
是否包含一个使用.isdigit()的数字。这怎么不起作用呢?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)
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)