You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jinja2中拼接列表中的所有子列表?

在Jinja2中拼接列表子列表的解决方案

Jinja2的sum过滤器和Python内置的sum函数功能不一样——它专门用于计算数值的总和,会尝试将每个元素转为数值类型,所以直接用sum(lofl, [])或者lofl|sum([])没法实现列表拼接,这也是你之前写法无效的原因。

你可以用以下两种方法实现需求:

方法一:自定义扁平化过滤器

在后端代码中注册一个自定义过滤器,用来递归扁平化列表:

from jinja2 import Environment

def flatten_nested_list(lst):
    flattened = []
    for element in lst:
        if isinstance(element, list):
            flattened.extend(flatten_nested_list(element))
        else:
            flattened.append(element)
    return flattened

# 注册过滤器到Jinja2环境
env = Environment()
env.filters['flatten'] = flatten_nested_list

之后在模板中直接使用过滤器:

{{ lofl|flatten }}

这种方法适合需要多次使用扁平化操作的场景,代码更简洁。

方法二:用模板循环拼接

如果不想自定义过滤器,也可以直接在模板里通过循环实现:

{% set flattened_list = [] %}
{% for sublist in lofl %}
    {% for item in sublist %}
        {% set _ = flattened_list.append(item) %}
    {% endfor %}
{% endfor %}
{{ flattened_list }}

这里利用set _ = ...来捕获append方法的返回值(append返回None,但Jinja2允许这种写法来执行列表操作),最终得到拼接后的扁平化列表。

内容的提问来源于stack exchange,提问作者Xaver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:07:06