1

如果我有一个简单的课程

class test(object):
    def __init__(self):
        self.prop=False

为什么这不起作用

l=[a,b,c]
[c.prop=True for c in l]

for c in l:
    print c.prop

它显示无效的符号。但常规循环有效

for c in l:
     c.prop=True

知道为什么列表理解在这里失败了吗?

4

2 回答 2

5

Python 中的列表推导式用于构建列表。理解循环遍历一个可迭代对象并评估一个表达式——它将表达式的结果附加到它正在构建的列表中。

这显然不适用于语句 - 他们评估什么?他们会返回什么价值?因此,Python 无法构建列表,它是一个SyntaxError. 这也适用于三元运算符之类的东西。

当您不需要构建列表时,或者当您想要执行遍历列表的操作时,请使用for循环。

于 2013-05-20T11:38:58.493 回答
4

那是因为列表推导并不意味着突变,它不被认为是 Pythonic,如果你想在列表推导中改变某些东西,请改用for循环

于 2013-05-20T11:29:58.057 回答