【问题标题】:Mako template sumMako 模板总和
【发布时间】:2014-04-06 11:34:20
【问题描述】:

我在创建 Mako 模板时遇到问题,该模板将获取数字列表并输出它们的总和。示例:

list = [1, 2, 3, 4, 5]

输出:

1 + 2 + 3 + 4 + 5

我希望将列表作为参数传递给模板。 使用 python ' + '.join(list) 解决这个问题的方法是什么? 我知道我们可以使用\ 来转义换行符,因此我可以在循环中执行此操作,但需要特别注意最后一个+,这非常难看。

谢谢!

【问题讨论】:

    标签: python mako


    【解决方案1】:

    内置函数sum() 应该可以正常工作,请参阅Python doc for sum

    您的模板正文应该只包含

    def template(context, numbers_list): return sum(numbers_list)

    或者,如果数字作为字符串传入:

    def template(context, numbers_list): return sum(int(x) for x in numbers_list)

    【讨论】:

    • 我不需要对这些数字求和,而是在它们之间用+ 符号打印出来。
    【解决方案2】:

    首先,请注意您应该切勿在内置类型之后命名变量。 我指的是您将列表 ([1,2,3,4,5]) 命名为 list。这会导致很多问题。

    其次,您可以使用此代码来获得您想要的结果:

    def return_desired_result_():
        li=[1,2,3,4,5]
        x=''
        for i in range(len(li)) :
        if i < len(li) -1 :
            x += str(li[i]) + " + "
        else :
            x += str(li[i])
        return x
    

    代码很hacky且不言自明,如果您需要更多解释,请发表评论。

    【讨论】:

    • 谢谢你。变量名称的好点。执行此操作的等效 python 代码是 ' + '.join(li),但是,我正在寻找一种在 Mako 中执行此操作的简洁方法。
    • '+'.join(li) 返回 '1+2+3+4+5+' 而我的函数返回 '1+2+3+4+5' 我以为这是你的问题
    • 不,join 会处理这个问题并且不放尾随的 +。
    • 哦,抱歉给您带来不便! :)
    猜你喜欢
    • 2014-03-06
    • 2014-06-27
    • 2011-12-26
    • 2019-12-13
    • 2021-04-19
    • 2018-12-02
    • 2013-06-25
    • 2014-01-14
    • 1970-01-01
    相关资源
    最近更新 更多