我有一个字符串表。我想要一种简单的方法来删除表中的所有重复项。
因此,如果表格为{a, b, c, c, d, e, e}
,则此操作后将为{a, b, c, d, e}
或者,也许最好是,有一种方法可以将一个元素添加到表中,但前提是它还没有包含在表中。
< \ noobquestion>
答案 0 :(得分:8)
听起来你正在尝试实现一个独特元素集合。本文可能对您有所帮助:http://www.lua.org/pil/13.1.html
答案 1 :(得分:7)
我通常为此做的是索引字符串上的表格,例如
tbl[mystring1] = 1
tbl[mystring2] = 1
等
当你添加一个字符串时,你只需使用上面的行,重复就会被处理掉。然后,您可以使用for ... pair do循环来读取数据。
如果要计算出现次数
使用类似
的内容if tbl[mystring1] == nil then
tbl[mystring1] = 1
else
tbl[mystring1] = tbl[mystring1] + 1
end
如果您需要转动桌子,那么在添加周期结束时您可以使用类似
的内容newtbl = {}
for s,c in pairs(tbl) do
table.insert(newtbl,s)
end
答案 2 :(得分:4)
最简单的方法是在“容器表”中使用表作为键,而不是值。
让我们调用容器表values
。您当前必须执行类似的操作才能向其中添加元素:
table.insert(values, value)
你像这样解析values
:
for i,v in ipairs(values) do
-- v contains the internal values
end
为了让表只有一次,你可以用其他方式插入它们:
t[value] = 1
这将确保插入的值(字符串,表格,数字等等)只包含一次,因为它们将被“覆盖”。
然后你可以像这样解析t
:
for k,_ in pairs(values) do
-- k contains the internal tables
end