四种写法,一个结果

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

一批金额 [120, 80, 200, 150],门槛 100:留下不低于门槛的,各乘 10,再加起来。这正是 l1_basic_11 里用循环做过的那条流水线。这条路线用过的四种写法,一次全跑:

A = [120, 80, 200, 150]
LINE = 100
from functools import reduce

def by_loop(xs, line):
    t = 0
    for a in xs:
        if a >= line:
            t = t + a * 10
    return t

def by_hof(xs, line):
    return sum(map(lambda a: a * 10, filter(lambda a: a >= line, xs)))

def by_reduce(xs, line):
    return reduce(lambda acc, x: acc + x * 10 if x >= line else acc, xs, 0)

def by_comp(xs, line):
    keep = lambda ys: [a for a in ys if a >= line]
    x10 = lambda ys: [a * 10 for a in ys]
    return sum(x10(keep(xs)))

print("/".join(str(f(A, LINE)) for f in (by_loop, by_hof, by_reduce, by_comp)))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论