为什么这个生成器表达式会引发语法错误?

时间:2017-06-02 04:30:28

标签: 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()的数字。为什么这不起作用?

1 个答案:

答案 0 :(得分:5)

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)
相关问题