一个简短的问题:是否可以将生成器表达式中的计算结果分配给引用者?
假设我有这样的表达式:
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')
或者我需要使用发电机吗?
谢谢!拉斯维加斯
如果要在循环中破坏性地更新对象,请使用循环,而不是生成器表达式:
for i in met_obj if str(i.code) != '90':
i.dist -= float(base)
生成器表达式在以函数式编程时很有用,而对现有变量/成员进行赋值通常是一种命令式构造。
我认为您的代码中有错误。
如您所见,float()
是一个函数,该语句float(i.dist) -= float(base)
意味着分配给函数调用,因此会出现语法错误:)
一个简短的回答:不,这是不可能的。