🔴 顺序反过来,结果差多少
一批金额 [120, 80, 200, 150],门槛 100:留下不低于门槛的,各乘 10,再加起来。这正是 l1_basic_11 里用循环做过的那条流水线。把"过滤"和"乘 10"组合成流水线,两种顺序各跑一次:
A = [120, 80, 200, 150]
LINE = 100
def compose(f, g):
"""先做 g,再把结果交给 f"""
return lambda x: f(g(x))
keep = lambda xs: [a for a in xs if a >= LINE]
x10 = lambda xs: [a * 10 for a in xs]
right = compose(x10, keep) # 先过滤,再乘 10
wrong = compose(keep, x10) # 先乘 10,再过滤
print(str(sum(right(A))) + "/" + str(sum(wrong(A))))
全部评论