您的位置:首页 > 编程语言 > Lua

Lua table(表)

2016-08-08 20:59 253 查看
Lua数组

数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。

Lua数组的索引键值可以使用整数表示,数组的大小不是固定的。

一维数组

一维数组是最简单的数组,其逻辑结构是线性表,一维数组可以用for循环出数组中的元素

array={"Lua", "Tutorial"}
for i=0, 2 do
print(array[i])
end



在Lua数组是以1为起始,但你也可以指定0开始。如果索引没有对应的值,则返回nil

除此之外,我们还可以以负数为数组索引值。

array={}
for i=-2,2 do
array[i]=i*2
end

for i=-2, 2 do
print(array[i])
end



多维数组

多维数组即数组中包含数组或一维数组的索引键对应一个数组。

-- 初始化数组
array={}
for i=1,3 do
array[i]={}
for j=1,3 do
array[i][j]=i*j
end
end

-- 访问数组
for i=1,3 do
for j=1,3 do
print(array[i][j])
end
end



table(表)

在Lua里,table的创建是通过“构造表达式”来完成,最简单构造表达式是{},用来创建一个空表。也可以在表里添加一些数据,直接初始化表。

-- 创建一个空的table
local tbl1={}
-- 直接初始表
local tabl2={"apple", "pear", "orange", "grape"}
Lua中的表(table)其实是一个“关联数组”,数组的索引可以是数字或者是字符串

a={}
a["key"]="value"
key=10
a[key]=22
a[key]=a[key]+11
for k,v in pairs(a) do
print(k .. ":" .. v)
end



不同于其他语言的数组把0作为数组的初始索引,在Lua里表的默认初始索引一般以1开始。

local tb1={"apple", "pear", "orange", "grape"}
for key, val in pairs(tb1) do
print("Key", key)
end



table不会固定长度大小,有新数据时table长度会自动增长,没初始的table都是nil

a={}
for i=1, 10 do
a[i]=i
end
a["key"]="val"
print(a["key"])
print(a["none"])



table遍历的两种方式的区别

a={"a","b",["c"]="d",{"a",["d"]=1}}
for key,val in pairs(a) do
print(key,val)
end


a={"a","b",["c"]="d",{"a",["d"]=1}}
for key,val in ipairs(a) do
print(key,val)
end



ipairs只能遍历索引是数值的简单table。pairs则可以完全遍历一个复杂的table

--去重并统计词频
a={"a","b","b","c"}
b={}
c={} --辅助数组,用于存储值
for key,val in pairs(a) do
if(b[val]~=nil) then
b[val]=b[val]+1
else
b[val]=1
table.insert(c,val)
end
end
table.sort(c)
for key,val in pairs(c) do
print(val.."--"..b[val])
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: