[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 ...
随机推荐
- Excel技巧--时尚的圆环比例图
如上图,制作方法如下: 1.创建圆环图:选择表格,点击“插入”-->点击 圆环图. 2.删除图中的标题和标记,将圆环内径缩至最小: 3.复制表格的数据,重复两次粘贴到图表中: 4.依次选择内两环 ...
- PerformEraseBackground 擦除背景(ThemeServices)
PerformEraseBackground 擦除背景的简单方法(外带ThemeServices例子) 在查这个函数的时候,顺便看到了有趣的代码. 怎么使用 Themes . unit Unit2; ...
- Windows 消息【二】窗口函数
前一篇文章讲到非队列消息会直接把消息Dispatch到窗口函数上,窗口函数长什么样? //就是一个大case分支 //要想拦截消息,override窗口函数是一个办法! procedure TCust ...
- php each和list的用法
each与list的用法(PHP学习) 1.each的用法 先看API array each ( array &$array ) api里是这么描述的:each — 返回数组中当前的键/值对并 ...
- OpenTSDB安装
时序数据库 时序数据库全称为时间序列数据库.主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据.时间序列数据主要由电力行业.化工行业.物联网行业等各类 ...
- Winfrom DataGridView中使用Tooltip
第一步:添加DataGridView.Tooltip控件,略 第二步:设置ToolTip 相关属性,略,参考下图 第三步:DataGridView 添加 CellMouseEnter.CellMous ...
- 使用apache设置绑定多个域名或网站
来源:百度知道 http://jingyan.baidu.com/article/363872ecec3e496e4ba16fdc.html 配置完成后可能是能访问了,但是跳转的路径总是不对,这时候 ...
- 黄聪:Pjax无刷新跳转页面实现,支持超链接与表单提交
什么是pjax? 当你点击一个站内的链接的时候,不是做页面跳转,而是只是站内页面刷新.这样的用户体验,比起整个页面都闪一下来说, 好很多. 其中有一个很重要的组成部分, 这些网站的ajax刷新是支持浏 ...
- pytest.1.快速开始
From: http://www.testclass.net/pytest/quick_start/ 简介 pytest测试框架可以让我们很方便的编写测试用例,这些用例写起来虽然简单,但仍然可以规模化 ...
- 学习笔记之PostgreSQL / pgAdmin / Psycopg / PostGIS
PostgreSQL: The world's most advanced open source database https://www.postgresql.org/ POSTGRESQL: T ...