由于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索引开始的地方
分享到:
相关推荐
例如,你可以轻松地添加自定义的跳转列表(Jump List),提供更丰富的用户交互体验。 2. **Microsoft.WindowsAPICodePack.Shell.dll**: Shell.DLL则是APICodePack中专门处理Windows Shell对象的组件,它提供了对...
- **表格与列表**: `Table`类允许插入和操作表格,`List`类支持创建和应用项目符号或编号列表。 **4. 文本格式化** - **字体与样式**: `Font`类提供了设置文本颜色、大小、样式(粗体、斜体)、下划线等属性的方法...
ubuntu国内镜像文件(sources.list) 下载速度还是不错的. 使用方法:把下载下来的文件覆盖/etc/apt/sources.list(原来的可以备份一下),然后 sudo apt-get update
ubuntu 下载源, 网易源地址列表 ,可以直接替换/etc/apt/source.list文件更新下载源地址
CentOS某些版本中,JAVA代码执行ftpClient.listFiles()有时结果为空。本项目解决了这个问题。具体代码思路可以参考博客:http://blog.csdn.net/yingprince/article/details/51275956
解决了某些系统中,ftpClient.listFiles()返回值总是为空的问题。 使用方法如下: ftpClient.changeWorkingDirectory(path); ftpClient.enterLocalPassiveMode(); ftpClient.configure(new FTPClientConfig(...
6. **deprecated-list.html**: 在这个文件中,开发者可以找到已经被弃用的API元素,包括类、方法和字段。了解这些元素将帮助避免在新项目中使用即将被淘汰的功能。 7. **overview-summary.html**: 这是一个框架...
标题 "基于 AList API 开发的 Android 和 iOS 客户端.zip" 提示我们这是一个包含 Android 和 iOS 应用程序源代码的压缩包,这些应用程序是利用 AList API 构建的。AList API 可能是一个提供数据访问、列表管理或者...
一套完整的 google drive... dir /b/s src\*.java > src.list javac -sourcepath src -d bin -classpath "lib/*;" @src.list copy client_secrets.json bin\ java -classpath "bin;lib/*;" com.google.oauth2.Oauth2
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...
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); String longestName = names.stream() .filter(name -> name.length() > 5) .sorted(Comparator.comparing(String::length).reversed()) .find...
Commons Collections库提供了对Java集合框架的扩展,包括对List、Set、Map等接口的增强功能。例如,它提供了各种工厂方法来创建集合,以及一些实用的集合操作,如逆序、过滤、分组和转换。`Commons-collections-3.2...
3.1. Managed API Compatibility 3.1.1. Android Extensions 3.2. Soft API Compatibility 3.2.1. Permissions 3.2.2. Build Parameters 3.2.3. Intent Compatibility 3.2.3.1. Core Application Intents 3.2.3.2. ...
此外,`List`类则用于创建带有项目符号或编号的列表。 iText还支持从HTML和XML文件直接生成PDF。`HTMLWorker`类(在较新版本中已被`XMLWorker`取代)可以解析这些标记语言,并将其转换为PDF格式,这极大地简化了从...
python-lichess:lichess.org API的客户端这是 的客户端库。 它被设计为: 易于使用需要时可自定义适应...list (lichess.api.users_status([ ' thibault ' , ' cyanfish ' ]))>>> online = [u[ ' id ' ] for u in user
此setlist.fm API cocoapod旨在让您轻松访问setlist数据,以构建精美的应用程序。 此服务提供获取设置列表和设置列表组成部分(例如艺术家,城市,国家或地区)的方法。 要求 ...了解setlist.fm的工作方式( 和是一...
8. **deprecated-list.html**:列出所有已被弃用的API,指导开发者避免使用即将被淘汰的代码。 9. **overview-summary.html**:提供框架的概览和摘要信息,通常包括框架的目标、设计理念和主要组件。 10. **...
标题"swt.api chm格式"指的是SWT API的官方文档,以CHM(Compiled Help Manual)格式存在。CHM是一种微软的压缩帮助文件格式,通常用于存放程序的API参考文档。这种格式便于离线查阅,并能快速搜索所需信息。 描述...
Collectors.toList()方法作为Stream API的一部分,提供了一种简便的方式,用于将流中的元素收集到列表中。本文将深入探讨Collectors.toList()的工作原理、使用场景、性能优化以及实际应用案例。 Collectors.toList()...
3. STL:这是C++标准库的一部分,提供了通用的容器(如vector、list、map等)、算法和迭代器,是编写高效、可复用代码的关键工具。 4. Windows API:这是微软为Windows操作系统提供的编程接口,包含了大量函数和...