工作在列表索引lua上。

我刚开始使用lua来配置程序,遇到了这个问题:

我有一个像这样的列表 t = { {2,3,4} {5,6,7} }

我想查看列表t是否包含某个元素,如果包含,我需要访问包含该元素的子列表中的所有元素

比如

if 2 in t then
"获取包含2的所有子列表中的元素并加起来"

因此,如果我查找2,我需要得到结果2+2+3=7 我的列表不会有任何重复的数字。

点赞
用户1150918
用户1150918
简单方法:

local function list_sum(list) assert(list)

local tmp_sum = 0

for _, value in ipairs(list) do --遍历列表并求和所有值
    tmp_sum = tmp_sum + value
end

return tmp_sum

end

local function sublist_sum_containing(list, search_for) assert(list) assert(search_for)

local ret_val = 0

for _, tmp_sublist in ipairs(list) do  --遍历列表
    for _, value in ipairs(tmp_sublist) do --遍历每个子列表
        if value == search_for then --查找值
            --天啊,我们刚刚找到了所需的子列表!
            ret_val = list_sum(tmp_sublist) --计算确切的子列表值的总和。

            return ret_val --返回总和并退出嵌套循环
        end
    end
end

return ret_val --零。(未找到子列表)

end

```

您可以考虑在更深的子_列表中使用递归。

2014-04-07 19:28:24