如何在Lua中展平(flattening)嵌套列表?
Lua 嵌套表展平实现方法
如果你需要把嵌套的Lua表展平成一维表,可以用递归函数处理,不管嵌套层级多少都能适用:
local function flatten(tbl) local result = {} for _, v in ipairs(tbl) do if type(v) == "table" then -- 递归处理嵌套子表,合并结果到主表 local flattened_sub = flatten(v) for _, val in ipairs(flattened_sub) do table.insert(result, val) end else -- 非表元素直接加入结果 table.insert(result, v) end end return result end
使用示例
针对你给出的输入表:
local nested_table = {{'text'}, {'something', 'string'}, {'thing'}} local flattened_table = flatten(nested_table) -- 最终结果:{'text', 'something', 'string', 'thing'}
如果确定你的嵌套表只有两层,也可以用更简洁的非递归写法,效率更高:
local function flatten_two_level(tbl) local result = {} for _, sub_tbl in ipairs(tbl) do for _, val in ipairs(sub_tbl) do table.insert(result, val) end end return result end
内容的提问来源于stack exchange,提问作者kornelbut
相关产品推荐
相关产品推荐

