[Lua]table(二):删除与排序
function PrintTable(tb)
for k,v in pairs(tb) do
print(v)
end
print("-------------------")
end function PrintTable2(tb)
for i,v in ipairs(tb) do
print(v)
end
print("-------------------")
end --------------------------------------------------------------A:删除
--1.删除数组(从后往前删除)
local a = {,,,,,}
local a2 = {,,,,,} --方法1(牺牲时间):
--在数组数量大且满足条件的元素多时不宜使用,因为会移动大量元素
for i=#a,,- do
if (a[i] % == ) then
table.remove(a, i)
end
end
PrintTable(a)--1,3,5 --方法2(牺牲空间):
local a3 = {}
for i=,#a2 do
if (a2[i] % ~= ) then
table.insert(a3, a2[i])
end
end
PrintTable(a3)--1,3,5 --2.删除字典(置空)
local b = {["a"]=,,,[]="b",,,} for k,v in pairs(b) do
if ((k == "a") or (type(v) == "number" and v % == )) then
b[k] = nil
end
end
PrintTable(b)--3,5,b --------------------------------------------------------------B:排序
--因为是排序,所以table必定是数组形式
--table.sort(table, function),原理是冒泡算法,相邻元素两两比较
--function返回true则表示排在前面 local c = {,,,,}
table.sort(c)--从小到大排序
PrintTable2(c)--1,2,3,4,5
table.sort(c, function(a,b) return a > b end)--从大到小排序
PrintTable2(c)--5,4,3,2,1 local c2 = {
{id=, name="e"},
{id=, name="c"},
{id=, name="a"},
{id=, name="b"},
{id=, name="d"},
}
table.sort(c2, function(a,b) return a.id < b.id end)
for i,v in ipairs(c2) do
print(v.name)
end
print("-------------------")--输出:b,c,d,a,e --多字段排序(先处理优先级低的)
--优先级:1.等级由高到低 2.id由高到低
local c3 = {
{id=, level=},
{id=, level=},
{id=, level=},
{id=, level=},
}
table.sort(c3, function(a,b)
if (a.level == b.level) then
return a.id > b.id
else
return a.level > b.level
end
end)
for i,v in ipairs(c3) do
print(v.id)
end
print("-------------------")--输出:4,3,1,2
[Lua]table(二):删除与排序的更多相关文章
- lua table 排序--满足多条件排序
前提 假设 一个小怪 有三种属性,等级(level).品质(quality).id(pid) 我们需要对他们进行排序,两种排序情况,第一是单一属性排序,比如按照等级进行排序,或者多种属性进行优先级排序 ...
- lua table排序报错与解决
lua table排序 table的sort函数 比如按照大小进行排序,下面这种写法在某些情况下可能会排序错误,甚至报invalid order function for sorting table. ...
- Lua table.sort排序
在用table.sort 排序的时候注意,如果使用多个条件排序,应在一个排序函数里按照条件优先级进行比较排序. 例如 local t = { {time = , i = }, {time = , i ...
- LUA table学习笔记
function printT( ... ) for i,v in ipairs(...) do print(i,v) end end t1={} t2={} t3={} table.insert(t ...
- Lua table库整理(v5.1)
这个库提供了表处理的通用函数. 所有函数都放在表 table. 无论何时,若一个操作需要取表的长度, 这张表必须是一个真序列. table.concat(list, [, sep, [, i , [, ...
- lua table表
lua table表 语法结构 创建一个 table 直接使用 "{}" 即可 table1 = {} -- 赋值 table1["name"] = " ...
- Lua 学习之基础篇四<Lua table(表)>
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...
- Lua table之弱引用
Lua采用了基于垃圾收集的内存管理机制,因此对于程序员来说,在很多时候内存问题都将不再困扰他们.然而任何垃圾收集器都不是万能的,在有些特殊情况下,垃圾收集器是无法准确的判断是否应该将当前对象清理.这样 ...
- lua table integer index 特性
table.maxn (table) Returns the largest positive numerical index of the given table, or zero if the t ...
随机推荐
- mybatis异常:Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for。。。。。。
框架环境:ssm 昨天下午技术经理更新了下表结构,多加了一个字段. 之后我根据新的mapper.xml文件写了增删改查的操作.重新启动之后不是这个错就是那个错,一大堆错误,头疼. 像类似于NoSuch ...
- enc28J60 网页控制LED灯
软件IDE:Arduino 1.6.3 1.库的安装: 从https://github.com/jcw/ethercard 下载源码包,解压,复制ethercard-master文件夹到Arduino ...
- golang里处理xml文件 转自https://studygolang.com/articles/5328
<?xml version="1.0" encoding="utf-8"?> <servers version="1"&g ...
- mysql 性能
https://blog.csdn.net/zengxuewen2045/article/category/6388631 #sda 磁盘信息dstat -D sda 3 5 #找出系统瓶颈dstat ...
- excel技巧--多行排成单列
要将上图的多行排成单列的效果,做法如下: 1.在倒数第二列的下方单元格,写入=号,然后再点击倒数第一列第一个单元格.这样复制该单元格的公式. 2.然后对着这个复制好的单元格的右下角一直往下拖拉,尽量拖 ...
- linux 服务器之间配置免密登录
客户机:172.16.1.2 远程机:172.16.1.3 1.远程机 a.允许root用户通过22端口登录 vi /etc/ssh/sshd_config PORT 22 PermitRootLog ...
- WEKA结果解读
红括号里面,左边是bad的数目,右边是good数目. TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.536 ...
- WIN10 网速问题,边下载 边逛论坛 电脑 有点卡
引用:https://www.chiphell.com/forum.php?mod=viewthread&tid=1961836&extra=page%3D1&mobile=2 ...
- Windows Remote Shell(WinRM)使用介绍
最近,为了实验我们安装了台Windows Server Core的服务器,没有图形界面的系统总会给人一种很完全的感觉,我们本着安全到底的想法,使用了Windows Remote Shell 的管理方式 ...
- idea下的调试配置
react和ts的整合 https://github.com/Microsoft/TypeScript-React-Starter vue的 https://github.com/ducksoupde ...