zoukankan      html  css  js  c++  java
  • chapter11_1 Lua数组、列表

      Lua中的table可以表示其他语言提供的数据结构:数组、记录、线性表、队列、集合等。

    在Lua中很少编写搜索算法,因为table本身就提供了直接访问任意类型的功能。

    数组

      使用整数来索引table即可在lua中实现数组,数组没有固定大小,可以根据需要增长。

    通常,在初始化一个数组时,也就间接地定义了它的大小:

    a = {}  --新建一个数组
    for i = 1,1000 do
        a[i] = 0
    end

    长度操作符(#)依赖于这个事实来计算数组的大小:

    print(#a)    --> 1000

    可以使用0,1或其他任意值来作为数组的起始索引:

    --使用索引值 -5 ~ 5来创建一个数组
    a = {}
    for i=-5,5 do
        a[i] = 0
    end

    在Lua中的习惯一般是以1作为数组的起始索引。Lua库和长度操作符都遵循这个约定。

    如果你的数组不是从1开始,那就无法使用这些功能。

    通过table构造式,可以在一句表达式中创建并初始化数组:

    squares = {1,4,7,16,25,49,62,87}

    这种构造式可以根据要求变得更长。

    矩阵与多维数组

      在Lua中,有两种方式表示矩阵。

    第一种是使用一个“数组的数组”,也就是说一个table中的每个元素是另一个table。

    创建一个NxM的零矩阵:

    mt = {}                --创建矩阵
    for i = 1,N do
        mt[i] = {}         --创建一个新行
        for j=1,M do
            mt[i][j] = 0
        end
    end    

    由于在Lua中table是一种对象,因此在创建矩阵时,必须显式地创建每一行。

    第二种是将两个索引合并为一个索引。如果两个索引是整数,可以将第一个索引乘以一个适当的常量,并加上第二个索引。

    mt = {}
    for i = 1,N do
        for j = 1,M do
            mt[(i-1)* M + j] = 0
        end
    end

    如果索引是字符串,那么可以把索引拼接起来,中间使用一个字符来分隔。例如,使用字符串s和t来索引一个矩阵,可以通过代码m[s..":"..t],其中,s和t都不

    能包含冒号,否则像("a:",":b")这样的索引会使最终索引变成“a::b”。如果无法保证这点,可以使用例如“”这样的控制字符来分隔两个索引。

    关于“稀疏矩阵”这里就不讨论了。

  • 相关阅读:
    rem适配布局---5. 方案1:苏宁首页制作1
    rem适配布局---4. rem适配方案
    rem适配布局---3. less
    rem适配布局---2. 媒体查询
    rem适配布局---1. 基础
    flex布局---9.携程网案例
    java基础---3. 数据类型转换、运算符
    flex布局---8.flex布局原理
    java基础---2. 常量&变量
    工会项目结题,游泳锻炼
  • 原文地址:https://www.cnblogs.com/daiker/p/5829130.html
Copyright © 2011-2022 走看看