在列表索引lua上工作

时间:2014-04-07 19:15:38

标签: lua

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

我有一个列表,如     t = {     {2,3,4}     {5,6,7}     }

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

if 2 in t then
"get all elements in sublist containing 2 and add them"

所以,如果我找两个,我需要回到结果2 + 2 + 3 = 7 我的清单不会有任何重复的数字。

1 个答案:

答案 0 :(得分:1)

这样做的简单方法:

local function list_sum(list)
    assert(list)

    local tmp_sum = 0

    for _, value in ipairs(list) do --iterate provided list and sum all values
        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  --iterate list
        for _, value in ipairs(tmp_sublist) do --iterate each sublist
            if value == search_for then --look for value
                -- OMG, we've just found sublist we were looking for!
                ret_val = list_sum(tmp_sublist) --sum exact sublist values.

                return ret_val --return sum and exit nested loops
            end
        end
    end

    return ret_val --zero. (no sublist found)
end

您可以考虑使用更深层次的子列表进行递归。