table是Lua语言中的一种重要的数据类型, table 的一些特性简单列举如下: 
(1).table 是一个“关联数组”,数组的索引可以是数字或者是字符串; 
(2).table 的默认初始索引一般以 1 开始; 
(3).table 的变量只是一个地址引用,对 table 的操作不会产生数据影响; 
(4).table 不会固定长度大小,有新数据插入时长度会自动增长; 
(5).table 所有索引值都需要用 “[“和”]” 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有[]括起,则认为是字符串索引; 
(6).table 所有元素之间,总是用逗号 “,” 隔开;

lua提供了一些辅助函数来操作table,例如insert、remove等。 
%———————————————————————————————————-% 
1、table.insert  and table.remove 
table.insert将一个元素插入到指定位置:。 
举例1:

t = {1, 2, 3}
table.insert(t, 1, 4}
  • 1
  • 2
  • 1
  • 2

t的结果将是{4, 1, 2, 3} 
举例2:

t={};
table.insert(t,"a");
table.insert(t,"b");
table.insert(t,"c");
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

结果是: 

1 : a 
2 : b 
3 : c 

insert的第二个参数是可以省略的,这样就会插入到数组的最后,从而不必移动其他元素。 
同样地,table.remove是从数组中移除(并返回)一个元素,table.remove(t,1)将移除t中下标是1的元素,如果不指定移除位置,则移除最后一个。 
%———————————————————————————————————-%

2、table.sort() 
另一个有用的函数是sort,对数组进行排序,如果没有提供排序函数,默认是<操作。这里不仅仅是数,对字符串也有效。 
举例1:

a = {1,3,2,6,4,8,7,5}  print('排序前:',a)
table.sort(a) print('排序后:',a)
  • 1
  • 2
  • 1
  • 2

结果: 
排序前: 

1 : 1 
2 : 3 
3 : 2 
4 : 6 
5 : 4 
6 : 8 
7 : 7 
8 : 5 

排序后: 

1 : 1 
2 : 2 
3 : 3 
4 : 4 
5 : 5 
6 : 6 
7 : 7 
8 : 8 

举例2:

name = {"you" ,"me", "him","bill" }
--table.sort - only works with arrays!
table.sort(name)
for k, v in ipairs( name) do
print( k,v)
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结果如下: 
1 bill 
2 him 
3 me 
4 you 
%———————————————————————————————————-%

3、table.concat() 
格式:table.concat(table, sep, start, end) 
concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长。 
举例:

spring = {"众里寻他千百度", "蓦然回首", "那人却在灯火阑珊处"}
print('一:',table.concat(spring, ","))
print('二:',table.concat(spring, ",",1,2))
print('三:\n',table.concat(spring, "\n",1,3))
num = {1 ,2, 3,4,5 ,6}
print('大小比较:',table.concat (num ,"<"))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结果如下: 
一: 众里寻他千百度,蓦然回首,那人却在灯火阑珊处 
二: 众里寻他千百度,蓦然回首 
三: 
众里寻他千百度 
蓦然回首 
那人却在灯火阑珊处 
大小比较: 1<2<3<4<5<6 
%———————————————————————————————————-%

4、table.maxn() 
含义:table.maxn()函数返回指定table中所有正数key值中最大的key值。 如果不存在key值为正数的元素, 则返回0。 此函数不限于table的数组部分。 
举例1:

cc = { 0.2654,0.0109,  0.3575,  0.8749,  0.4324,0.1932}
print(cc)
key = table.maxn(cc)
print('最大的key值为:',key)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

结果: 

1 : 0.2654 
2 : 0.0109 
3 : 0.3575 
4 : 0.8749 
5 : 0.4324 
6 : 0.1932 

最大的key值为: 6 
举例2:

apple = {"a" ,"p",[5]="e"}
print(table.maxn(apple))
duck = {[-2]=3,[-1]=0}
print(table.maxn(duck))
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

结果如下: 


%———————————————————————————————————-%

5、table.getn() 
含义:返回table中元素的个数 
举例:

t1 = {1, 2, 3, 5}
print(getn(t1))
  • 1
  • 2
  • 1
  • 2

结果:4 
%———————————————————————————————————-%

6、table.pack()和table.unpack() 
table.pack函数是获取一个索引从 1 开始的参数表 table,并会对这个 table 预定义一个字段 n,表示该表的长度。 
举例:

t = table.pack("test", "param1", "param2", "param3")
print(t)
  • 1
  • 2
  • 1
  • 2

结果: 

1 : test 
2 : param1 
3 : param2 
4 : param3 
n : 4 

table.unpack函数用于返回 table 里的元素,用法:table.unpack(table, start, end),其中参数 start 是开始返回的元素位置,默认是 1,参数 end 是返回最后一个元素的位置,默认是 table 最后一个元素的位置,参数 start、end 都是可选 
举例:

t = {"Lua", "C++", "Python", "Java"}
print('(1):\n',t)
print('(2):',table.unpack(t))
a, b, c, d = table.unpack(t)
print('(3):',b)
print('(4):',a, b, c, d)
print('(5):',table.unpack(t, 2))
print('(6):',table.unpack(t, 2, 3))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

结果如下: 
(1): 

1 : Lua 
2 : C++ 
3 : Python 
4 : Java 

(2): Lua C++ python Java 
(3): C++ 
(4): Lua C++ Python Java 
(5): C++ Python Java 
(6): C++ Python

lua的table库中的常用函数总结的更多相关文章

  1. numpy函数库中一些常用函数的记录

    ##numpy函数库中一些常用函数的记录 最近才开始接触Python,python中为我们提供了大量的库,不太熟悉,因此在<机器学习实战>的学习中,对遇到的一些函数的用法进行记录. (1) ...

  2. lua的table库中经常使用的函数

    lua提供了一些辅助函数来操作table. 比如,从list中insert和remove元素,对array的元素进行sort.或者concatenate数组中的全部strings.以下就具体地解说这些 ...

  3. Mysql中的常用函数:

    Mysql中的常用函数: 1.字符串函数: (1).合并字符串 concat():// concat('M','y',"SQL",'5.5');== MySQL5.5//当传入的参 ...

  4. socket编程中客户端常用函数

    1 常用函数 1.1   connect() int connect(int sockfd, const struct sockaddr *servaddr, socklen_taddrlen); 客 ...

  5. Lua中的常用函数库汇总

    lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调 ...

  6. Lua 之table库

    标准table库 table.concat(table, sep,  start, end) concat是concatenate(连锁, 连接)的缩写,table.concat()函数列出参数中指定 ...

  7. Lua整理——table库

    table属性 table库是有一些辅助函数构成的,这些函数将table作为数组来操作. 当中.有对列表中插入和删除元素的函数,有对数组元素进行排序的函数.还有对链接一个数组中全部字符串的函数. 0. ...

  8. C++中string常用函数用法总结

    string(s小写)是C++标准库中的类,纯C中没有,使用时需要包含头文件#include<string>,注意不是<string.h>,下面记录一下string中比较常用的 ...

  9. PHP自学4——通过函数将数组数据输出到html的Table标签中(使用函数的例子)

    这一节其实说实话并没有什么干货,不过为了防止PO主的懒癌的复发,还是坚持放一点东西,即使是内容和长度都令人发指.这一节通过一个函数来实现将数组中的内容输出html的Table标签当中显示. 函数文件— ...

随机推荐

  1. POJ2182 Lost Cows 树状数组

    题意:有编号1~n乱序排列的奶牛,给出了每一个奶牛前小于自己编号的奶牛数目 维护一个树状数组,下标是编号,值为$0/1$标识是否存在,很显然最后一个牛的编号是知道的,我们在树状数组上二分出前缀和为小于 ...

  2. java学习第一天:环境的配置

    1.下载JDK,当前版本下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.htm ...

  3. 【luoguP1797】 克鲁斯的加减法_NOI导刊2010提高(05)

    题目描述: 奶牛克鲁斯认为人类的加法算式太落后了.比如说有时候想要用加法计算+15*3,只能写成+15+15+15,真是浪费精力啊!于是,克鲁斯决定开发出一种新的加法算式.当然新的算式也是建立在原本算 ...

  4. DP-------bzoj2699 更新

    题目描述: 对于一个数列A[1..N],一种寻找最大值的方法是:依次枚举A[2]到A[N],如果A[i]比当前的A[1]值要大,那么就令A[1]=A[i],最后A[1]为所求最大值.假设所有数都在范围 ...

  5. Prime Path (POJ - 3126 )(BFS)

    转载请注明出处:https://blog.csdn.net/Mercury_Lc/article/details/82697622     作者:Mercury_Lc 题目链接 题意:就是给你一个n, ...

  6. jQuery动画之显示隐藏动画

    1. 显示动画 以下面一个代码示例: <!doctype html> <html lang="en"> <head> <meta char ...

  7. sudo 问题:sorry, you must have a tty to run sudo

    写定时任务时候遇到 如下问题 To start backup... -- :: sudo: sorry, you must have a tty to run sudo The backup to c ...

  8. 【APUE】第3章 文件I/O (2) 函数creat、lseek、read、write使用说明

    1.函数creat 可以使用creat函数创建一个新文件. #include<fcntl.h> int creat(const char *path, mode_t mode); 返回值: ...

  9. 【Eureka】 作为服务注册中心,Eureka比Zookeeper好在哪里

    著名的 CAP 理论指出,一个分布式系统不可能同时满足 C(一致性) A(可用性) 和 P(分区容错性).由于分区容错性 P 是在分布式系统中必须保证的,因此我们只能在 A 和 C 之间进行权衡. Z ...

  10. 使用Jsp/Js/Ajax/Json/Jquery/Easyui + Servlet + JDBC + Lucene/Mysql/Oracle完成数据库分页

    package loaderman.action; import java.io.IOException; import java.io.PrintWriter; import java.util.L ...