将计算值分配给生成器表达式中的变量?

时间:2012-04-05 11:48:20

标签: python generator

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

我们假设我有一个这样的表达式:

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')

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

谢谢! LarsVegas

3 个答案:

答案 0 :(得分:1)

如果你想破坏性地更新循环中的对象,那么使用循环,而不是生成器表达式:

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

当以functional样式进行编程时,生成器表达式很有用,而对现有变量/成员进行赋值通常是必要的构造。

答案 1 :(得分:0)

我认为您的代码中存在错误。

如您所见,float()是一个函数,语句float(i.dist) -= float(base)表示分配给函数调用,因此它将是语法错误:)

答案 2 :(得分:0)

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