Lua table(表)
2016-08-08 20:59
253 查看
Lua数组
数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。
Lua数组的索引键值可以使用整数表示,数组的大小不是固定的。
一维数组
一维数组是最简单的数组,其逻辑结构是线性表,一维数组可以用for循环出数组中的元素
在Lua数组是以1为起始,但你也可以指定0开始。如果索引没有对应的值,则返回nil
除此之外,我们还可以以负数为数组索引值。
多维数组
多维数组即数组中包含数组或一维数组的索引键对应一个数组。
table(表)
在Lua里,table的创建是通过“构造表达式”来完成,最简单构造表达式是{},用来创建一个空表。也可以在表里添加一些数据,直接初始化表。
不同于其他语言的数组把0作为数组的初始索引,在Lua里表的默认初始索引一般以1开始。
table不会固定长度大小,有新数据时table长度会自动增长,没初始的table都是nil
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
数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。
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
相关文章推荐
- Lua中的table
- lua 和 C 语言进行交互 —— 如何传递table
- Lua table pair和ipair区别
- Lua内存泄露检测原理和weak_table弱引用
- [置顶] C++ 结构体转Lua Table解决方案
- cocos-Lua table积累
- Lua中,泛型for循环遍历table时,ipairs和pairs的区别
- lua 如何输出树状结构的table?
- Lua学习笔记 第十七章 弱引用table
- 浅析Lua中table的遍历
- Lua中释放table占用内存的方法
- 浅析Lua中table的遍历
- Lua - table 稀疏列表(Cannot serialise table: excessively sparse array)报错
- Lua——table(表)
- 打印 Lua 的 table
- Lua中table求长度的集中方法
- Lua 小白关于Table遍历的一点笔记
- lua--table
- LUA--table数据类型
- 5、C++读取Lua中Table的内容