一个简短的问题:是否可以将生成器表达式中的计算结果分配给引用者?
我们假设我有一个这样的表达式:
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
答案 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)
一个简短的回答:不,这是不可能的。