由于lua中没有原生的list对象类型,而只有(无所不能的)table。习惯了python编程的人很可能会觉得不适应。平心而论,Python在这一点上的设计确实更傻瓜化更清晰一点,好用之处体现在两点:
- 直接用[]来生成list对象,在代码中显得很清楚;
- 有大量方便好用的函数能操作在list对象上,非常方便;
因此,我们希望在lua中,加入对list对象类型的支持。这个目标,在lglib中实现。
全局对象List
lglib中,定义了一个全局对象List,它就是所有list实例的原型。使用require 'lglib'后,这个对象可以直接使用。此对象又继承自lua的原生table结构。
生成一个新的list
local lista = List()
local listb = List {1,2,3,4,5,6}
判断一个对象是否是一个list
isList(t)
产生一个序列list
List.range(start, finish)
start: 序列的起始值
finish: 序列的结束值
示例:
local a = List.range(1, 5) --> {1,2,3,4,5}
local a = List.range(5) --> {1,2,3,4,5}
local a = List.range(5, 10) --> {5,6,7,8,9,10}
当使用全局对象List创建了list实例后,这些实例可以使用下面的api
添加元素
list_obj:append(elem) 将新元素elem添加到列表末尾
list_obj:prepend(elem) 将新元素elem添加到列表头部
list_obj:push(elem) 将新元素elem添加到列表末尾
list_obj:insert([pos,] elem) 将新元素插入到列表的某一个位置
删除元素
list_obj:pop() 弹出列表最后一个元素,并返回此元素(此函数不是返回list_obj对象本身)
list_obj:iremove(i) 按下标索引删除第i个元素,返回list_obj对象本身
list_obj:remove(elem) 按值删除元素elem,返回list_obj对象本身
扩展list
list_obj:extends(another) 把list another与list list_obj拼接起来,仍然由list_obj进行索引
another: 另外一个list
示例:
local a = List {1,2,3} --> a = {1,2,3}
local b = List {4,5,6} --> b = {4,5,6}
a:extends(b) --> a = {1,2,3,4,5,6}
注:此合并运算也可以由 a = a + b 的形式来完成。
查找
list_obj:find(val[, idx]) 在list_obj中从第idx个索引起开始查找值为val的元素,返回此元素的索引
示例:
local a = List {1,2,3,7,8,9} --> a = {1,2,3,7,8,9}
a:find(7) --> 4
包含
list_obj:contains(elem) 判断元素是否在list_obj中,返回true或false
计算同值元素出现次数
list_obj:count(elem) 计算元素elem在list_obj中出现的次数
转成字符串
list_obj:join(sep) 将列表的各元素以sep为间隔符合并成一个字符串,返回合并后的字符串
排序
list_obj:sort(cmp) 将本列表按传入的比较函数cmp进行排序,返回自身
翻转
list_obj:reverse() 将本列表的各元素的顺序前后翻转,返回自身
切片
list_obj:slice(start, stop, is_rev) 将本列表的各元素的顺序前后翻转,返回自身
清空
list_obj:clear() 将本列表清空(暂时不知道什么场合下会用到它)
求长度
list_obj:len() 求本列表长度
删除一个区间
list_obj:chop(i1,i2) 删除本列表中索引从i1开始到i2结束的一段,返回自身
将一个列表插入到本表中来
list_obj:splice(idx, list) 将列表list中的所有元素依次插入到本列表从idx索引开始的地方
分享到:
相关推荐
$config['SEND_SMS_API'] //发送url中需要填入的apikey信息 2.SMSNotify/list.php,此文件是记录所有被促发的已发送短信及其状态, 供管理员查看,可以不要,如果要放置网站上,建议改名。 设置完成后,请在...
6.4.1 PS API与Tool help API 176 6.4.2 遍历系统中的进程 178 6.4.3 列举进程的模块、线程 182 6.4.4 进程的堆使用、内存占用、虚拟内存大小,页面错误情况 184 6.5 动态链接库 185 6.5.1 加载、释放DLL...
* copy: copy模块提供了对复合(compound)对象(list,tuple,dict,custom class)进行浅拷贝和深拷贝的功能。 * pickle: pickle模块被用来序列化python的对象到bytes流,从而适合存储到文件,网络传输,或...
6.4.1 PS API与Tool help API 176 6.4.2 遍历系统中的进程 178 6.4.3 列举进程的模块、线程 182 6.4.4 进程的堆使用、内存占用、虚拟内存大小,页面错误情况 184 6.5 动态链接库 185 6.5.1 加载、释放DLL...
Combox控件Api操作模块正在设计中(常数写好了,大家可以自行扩展) 用了微秒级的CPU计时器API:QueryPerformanceCounter,大家可以对自已的函数进行高精度运行计时,提高函数运行效率,优化到更好. 高精度计时 win32...
注意:该库基于 API,尚未得到广泛支持。 检查并根据需要添加 ! 在上查看示例 用法 将模块导入您的应用程序: // From ES6 import InfiniteList from 'react-infinite-scroll-list' ; // From CJS const ...
RadioBrowser API客户端Nodejs模块安装npm install radio-browser用法每个方法都返回一个Promise,因此您必须使用then并catch或async并await 。 const RadioBrowser = require ( 'radio-browser' )let filter = { ...
重写封装了部分服务封装了验证器在基础控制器中封装了获取get、post、json参数并自动过滤数据对原转发(forward)做了封装集成了smarty模板引擎添加模块很容易例如还需要增加一个api模块打开config/define.php,把...
该模块将帮助您通过CLI轻松使用LINE API。 简短的摘要 LINE API CLI可以帮助您更快地处理与LINE-API相关的项目,因为您不需要在Web浏览器和IDE之间进行切换(在首次设置后:P)。 如果您已经是使用cURL与LINE API...
pymangal是一个与mangal API交互的python模块。 该文档位于: : 所有编号版本都推送到PyPI,因此您可以随时使用pip install pymangal进行pip install pymangal 。 待办事项清单 顺序不分先后 networkx导出 自动...
synnefo-nodejs-api 是一个模块,允许您使用 node.js 与进行通信 Synnefo 是一个用 Python 编写的完整开源云堆栈,提供计算、网络、图像、卷和存储服务。 安装 待定 用法 待定 方法 所有方法都遵循。 可以使用从源...
用 Node.js 编写的 NS API 模块 如何使用 var NS = require('./src/ns'); NS.Auth('API Username', 'API Password'); NS.getStations(function(stations) { return stations; // List of stations }); 文档 文档...
在模块系统之外添加资产 何时使用public文件夹 使用全局变量 添加引导程序使用自定义主题 增加流量 添加路由器 添加自定义环境变量 在HTML中引用环境变量 在Shell中添加临时环境变量 在.env添加开发环境变量 我可以...
Pingdom REST API的Python模块 描述 简单Python包装器。 该模块不支持即将淘汰的 。 有关SOAP接口的信息,请参见 。 依存关系 除了Python标准库,没有其他功能。 用法 实例化: import pingdom p = pingdom....
proconsp-api-consumer Node.js模块,可在PROCON SP SP中进行投诉查询 要安装此模块 $ npm i proconsp-api-consumer 如何获取API的令牌 按照网站上的说明获取令牌 如何预约 设置procon api令牌: const { ...
List处理各种List对象 Mail邮件处理块 PY拼音转换模块 Rnd随机数函数块 Session操作类 Sc脚本执行操作模块 Time时间操作块 Tpl模板类 Up,Upload上传处理块 Url处理块 X扩展块 Xml处理XML块 以及其他一些调用方法如as