Python如何保留嵌套列表结构并移除所有非字符串类型元素?
嵌套列表过滤非字符串元素实现方案
针对保留原有嵌套层级、仅保留字符串元素的需求,最通用的实现方式是递归遍历列表,逐元素判断类型做筛选,以下是常用开发语言的实现示例:
Python 实现
直接编写递归函数即可,无需引入第三方依赖:
def filter_str_in_nested_list(arr): res = [] for item in arr: if isinstance(item, list): # 遇到子列表递归处理,完整保留原有层级 res.append(filter_str_in_nested_list(item)) elif isinstance(item, str): # 仅保留字符串类型元素 res.append(item) return res # 效果验证 origin = [[{"a":7},"1",{"x":0.25},"2"],[{"y":0.25,"x":1.5},"4"],[{"y":-0.75},"3"]] print(filter_str_in_nested_list(origin)) # 运行输出:[['1', '2'], ['4'], ['3']],和预期结果完全一致
JavaScript 实现
如果是前端/Node.js 场景,递归逻辑完全一致:
function filterStrInNestedList(arr) { const res = []; for (const item of arr) { if (Array.isArray(item)) { res.push(filterStrInNestedList(item)); } else if (typeof item === 'string') { res.push(item); } } return res; } // 效果验证 const origin = [[{a:7},"1",{x:0.25},"2"],[{y:0.25,x:1.5},"4"],[{y:-0.75},"3"]]; console.log(filterStrInNestedList(origin)); // 运行输出:[ [ '1', '2' ], [ '4' ], [ '3' ] ]
该方案支持任意深度的嵌套列表结构,不会修改原列表的层级关系,数字、字典、布尔值、空值等所有非字符串类型都会被过滤。
内容的提问来源于stack exchange,提问作者Ben0981
相关产品推荐
相关产品推荐

