Lua: удалить повторяющиеся элементы
у меня есть стол в lua
test = {1,2,4,2,3,4,2,3,4,"A", "B", "A"}
Я хочу, чтобы удалить все повторяющиеся элементы в таблице.
Выход должен быть
test = {1,2,4,3,"A","B"}
EDIT:
мой попробовать :
> items = {1,2,4,2,3,4,2,3,4,"A", "B", "A"} > flags = {} > for i=1,table.getn(items) do if not flags[items[i]] then io.write(' ' .. items[i]) flags[items[i]] = true end >> end 1 2 4 3 A B>
Теперь он работает нормально. Спасибо за ответы и комментарии.
4 ответов
подобно примеру, приведенному @Dimitry, но только один цикл
local test = {1,2,4,2,3,4,2,3,4,"A", "B", "A"}
local hash = {}
local res = {}
for _,v in ipairs(test) do
if (not hash[v]) then
res[#res+1] = v -- you could print here instead of saving to result table if you wanted
hash[v] = true
end
end
local test = {1,2,4,2,3,4,2,3,4,"A", "B", "A"}
-- make unique keys
local hash = {}
for _,v in ipairs(test) do
hash[v] = true
end
-- transform keys back into values
local res = {}
for k,_ in pairs(hash) do
res[#res+1] = k
end
-- 1 2 3 4 A B
for _,v in ipairs(res) do
print(v)
end
test = res
... простое, простое решение просто с головы, но я думаю, подсказка дана в книге PiL
что вы пытались решить проблему?
> items = {1,2,4,2,3,4,2,3,4,"A", "B", "A"} > flags = {} > for i=1,table.getn(items) do if not flags[items[i]] then io.write(' ' .. items[i]) flags[items[i]] = true end >> end 1 2 4 3 A B>
local xx = {'a','b','c','d','a','d','f','g','a'}
таблица.sort (xx)
локальный результат = {}
для ключа значение в ipairs (xx) do
если значение ~=xx[ключ+1], то
table.insert(result,value)
конец
конец
для ключа значение в ipairs (результат) do
печать(ключ,значение)
конец