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

如何将含多层嵌套的字符串列表转换为整数嵌套列表?

解决多层嵌套字符串列表转整数列表的问题

你的问题核心是处理多层嵌套的列表结构,直接用单层map无法处理嵌套的子列表,需要递归或者嵌套遍历的方式来处理每一层元素。

方法一:递归函数(通用,支持任意层数嵌套)

写一个递归函数,遍历每个元素:如果是列表就递归处理,否则将字符串转为整数:

def convert_nested_str_to_int(nested_list):
    converted = []
    for item in nested_list:
        if isinstance(item, list):
            # 遇到子列表,递归转换
            converted.append(convert_nested_str_to_int(item))
        else:
            # 字符串转整数
            converted.append(int(item))
    return converted

# 假设x是你的原始嵌套列表
x = [    ['7', '1'],     ['1', '6', '4', '1'],     ['2', '1', '0', '0'],     [        ['1', '0', '4', '5'],         ['9', '3', '0', '7'],         ['0', '1', '2', '0']    ],     [        ['8', '0', '2', '6'],         ['6', '3', '8', '8'],         ['3', '0', '0', '1']    ]]

converted_x = convert_nested_str_to_int(x)
print(converted_x)

运行后会得到你想要的输出:

[[7, 1], [1, 6, 4, 1], [2, 1, 0, 0], [[1, 0, 4, 5], [9, 3, 0, 7], [0, 1, 2, 0]], [[8, 0, 2, 6], [6, 3, 8, 8], [3, 0, 0, 1]]]

方法二:嵌套列表推导式(适合固定层数嵌套)

如果确定你的列表最多是三层嵌套,可以用嵌套的列表推导式直接处理:

converted_x = [
    [int(s) for s in elem] if all(isinstance(s, str) for s in elem) 
    else [[int(ss) for ss in sub] for sub in elem] 
    for elem in x
]

为什么你之前的方法失败?

  1. 第一个方法中list(map(int, n) for n in elems)是生成器表达式,没有被转为列表,所以得到的是map对象的迭代器;即便套上list(),遇到子列表时依然会触发类型错误。
  2. 第二个方法直接对elems用map(int, elems),当elems是子列表(比如x的第4、5个元素)时,map会尝试把列表转成整数,自然触发TypeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:45:39