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

如何将包含浮点数与子列表的列表展开为单一浮点数列表?

如何将包含浮点数和子列表的混合列表转为单一浮点数列表?

先明确需求:把包含浮点数和子列表的混合列表(示例如下),转换为仅含浮点数的一维列表。

原始列表:

my_list = [1., 2., 4., [4., 5., 6.], 5.]

目标结果:

desired = [1., 2., 4., 4., 5., 6., 5.]

以下是几种实用实现方式:

方法1:递归遍历(支持多层嵌套)

如果你的列表可能存在多层嵌套(比如子列表里还有子列表),递归是最通用的方案:

def flatten_list(lst):
    result = []
    for item in lst:
        if isinstance(item, list):
            result.extend(flatten_list(item))
        else:
            result.append(item)
    return result

# 调用示例
my_list = [1., 2., 4., [4., 5., 6.], 5.]
flattened = flatten_list(my_list)
print(flattened)  # 输出: [1.0, 2.0, 4.0, 4.0, 5.0, 6.0, 5.0]

逻辑很简单:遍历每个元素,判断如果是列表就递归展开,否则直接加入结果列表。

方法2:迭代式处理(无递归)

如果不想用递归,也可以用循环手动处理:

def flatten_list(lst):
    result = []
    stack = list(lst)
    while stack:
        item = stack.pop()
        if isinstance(item, list):
            stack.extend(item)
        else:
            result.append(item)
    # 因为pop是从末尾取,最后要反转回来保证顺序一致
    return result[::-1]

# 调用示例
my_list = [1., 2., 4., [4., 5., 6.], 5.]
flattened = flatten_list(my_list)
print(flattened)  # 输出: [1.0, 2.0, 4.0, 4.0, 5.0, 6.0, 5.0]

这里用栈模拟递归的展开过程,最后反转结果匹配原列表的元素顺序。

方法3:简洁的列表推导式(结合递归)

如果追求代码简洁,可以用递归+列表推导式的写法:

def flatten_list(lst):
    return [x for item in lst for x in (flatten_list(item) if isinstance(item, list) else [item])]

# 调用示例
my_list = [1., 2., 4., [4., 5., 6.], 5.]
flattened = flatten_list(my_list)
print(flattened)  # 输出: [1.0, 2.0, 4.0, 4.0, 5.0, 6.0, 5.0]

这种写法把展开逻辑压缩到一行,适合偏好简洁代码的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:55:24