【发布时间】:2017-06-25 21:21:59
【问题描述】:
这是here的延续。
我使用的是yield 语句而不是return。
这是代码:
class Measurements():
def __init__(self, value, other):
self.value = value
self.other = other
class Criteria():
def __init__(self, new_value, measurements):
self.new_value = new_value
self.measurements = measurements
def method(self):
for measurement in self.measurements:
if 20 < measurement.value < 110:
measurement.value = self.new_value
return self.measurements
class Evaluate():
def __init__(self, criteria):
self.criteria = criteria
def execute(self):
for c in self.criteria:
c.method()
yield c.measurements
def main():
criteria = [
Criteria(999, [Measurements(100, 0.3), Measurements(33, 0.5)]),
Criteria(999, [Measurements(150, 0.3), Measurements(35, 0.5)]),
]
compare = [
Measurements(999, 0.3), Measurements(999, 0.5),
Measurements(100, 0.3), Measurements(999, 0.5)
]
obs = Evaluate(criteria).execute()
# here compare
if __name__ == "__main__":
main()
我想将obs 的输出值与compare 中的值进行比较。我指的是Measurements 部分。
所以,从obs,我们有(对于运行代码后的变量值):999,999,150,999(因为如果 20
从compare 我们有:999,999,100,999
【问题讨论】:
-
从什么继续?实际的问题或问题是什么?
-
@ChristophTerasa:我编辑过,但无论如何它是独立的。
-
您想如何比较它们?
obs是一个生成器,因此您可以遍历这些值。 -
“我想将 obs 的输出值与比较中的值进行比较”。请解释为什么
list(obs) == compare不能满足您的需求。 -
@scytale:是的,我尝试使用 for 循环和 enumerate 但我想不通