0

一个简短的问题:是否可以将生成器表达式中的计算结果分配给引用者?

假设我有这样的表达式:

m = (float(i.dist) - float(base) for i in met_obj if str(i.code) != '90')

i.dist是我想要机会的对象的属性。我试过:

m = (float(i.dist) -= float(base) for i in met_obj if str(i.code) != '90')

或者我需要使用发电机吗?

谢谢!拉斯维加斯

4

3 回答 3

1

如果要在循环中破坏性地更新对象,请使用循环,而不是生成器表达式:

for i in met_obj if str(i.code) != '90':
   i.dist -= float(base)

生成器表达式在以函数式编程时很有用,而对现有变量/成员进行赋值通常是一种命令式构造。

于 2012-04-05T12:51:41.173 回答
0

我认为您的代码中有错误。

如您所见,float()是一个函数,该语句float(i.dist) -= float(base)意味着分配给函数调用,因此会出现语法错误:)

于 2012-04-05T12:04:40.243 回答
0

一个简短的回答:不,这是不可能的。

于 2012-04-05T12:33:57.533 回答