我刚开始使用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 我的清单不会有任何重复的数字。
答案 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
您可以考虑使用更深层次的子列表进行递归。