首页 > 其他分享 >Lua 数组

Lua 数组

时间:2023-05-15 20:57:14浏览次数:30  
标签:do end 索引 Lua 数组 array

Lua 数组

数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。

Lua 数组的索引键值可以使用整数表示,数组的大小不是固定的。

和table的区别边界比较模糊

一维数组

一维数组是最简单的数组,其逻辑结构是线性表

一维数组可以用for循环出数组中的元素,如下实例:

实例

array = { "Lua", "Tutorial" }

for i = 0, 2 do
    print(array[i])
end

结果:

nil
Lua
Tutorial

正如你所看到的,我们可以使用整数索引来访问数组元素,如果指定的索引没有值则返回 nil

在 Lua 索引值是以 1 为起始,但你也可以指定 0 开始。

除此外我们还可以以负数为数组索引值:

实例

array = {}

for i = -2, 2 do
    array[i] = i * 2
end

for i = -2, 2 do
    print(array[i])
end

结果:

-4
-2
0
2
4

多维数组

多维数组即数组中包含数组或一维数组的索引键对应一个数组。

以下是一个三行三列的阵列多维数组:

实例

-- 初始化数组
array = {}
for i = 1, 3 do
    array[i] = {}
    for j = 1, 3 do
        array[i][j] = i * j
    end
end

-- 访问数组
for i = 1, 3 do
    for j = 1, 3 do
        print(array[i][j])
    end
end

结果为:

1
2
3
2
4
6
3
6
9

不同索引键的三行三列阵列多维数组:

实例

-- 初始化数组
array = {}
maxRows = 3
maxColumns = 3
for row = 1, maxRows do
    for col = 1, maxColumns do
        array[row * maxColumns + col] = row * col
    end
end

-- 访问数组
for row = 1, maxRows do
    for col = 1, maxColumns do
        print(array[row * maxColumns + col])
    end
end

以上代码执行输出结果为:

1
2
3
2
4
6
3
6
9

正如你所看到的,以上的实例中,数组设定了指定的索引值,这样可以避免出现 nil 值,有利于节省内存空间。

标签:do,end,索引,Lua,数组,array
From: https://www.cnblogs.com/hcgk/p/17403081.html

相关文章

  • Lua 字符串
    Lua字符串字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua语言中字符串可以使用以下三种方式来表示:单引号间的一串字符。双引号间的一串字符。[[与]]间的一串字符。以上三种方式的字符串实例如下:实例str1="Lua"print("双引号字符串:",str1)str2......
  • 数组排序输出
    一.问题描述:对于输入的每一批数,按从小到大排序后输出。一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束),第二个输入为该批数的数量size(0<size<=10),接下来为size个指定类型的数据。输出将从小到大顺序输出数据。#i......
  • java数组去重_JAVA数组去重常用方法
    java数组去重_JAVA数组去重常用方法发布于 2022-09-1017:18:356950举报大家好,又见面了,我是你们的朋友全栈君。packagecom.zxj.test;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.HashMap;importjava.util.List;importjava.util.......
  • 螺旋打印二维数组
    publicstaticvoidShow(){//1,2,3,7,8,4,9,5,6int[][]arr=newint[][]{newint[]{1,2,3},newint[]{5,6,7},newint[]{9,4,8}};inttr=0;inttc=0;intdr=arr.Le......
  • 代码随想录算法训练营第6天 | 哈希表理论基础, 242.有效的字母异位词, 349. 两个数组
     第三章 哈希表part01  今日任务  ●  哈希表理论基础 ●  242.有效的字母异位词 ●  349. 两个数组的交集 ●  202. 快乐数●  1. 两数之和     详细布置   哈希表理论基础  建议:大家要了解哈希表的内部实现原理,哈希函数,哈希......
  • 剑指 Offer 03. 数组中重复的数字
    题目找出数组中重复的数字。在一个长度为n的数组nums里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。其中,2<=n<=100000示例输入:[2,3,1,0,2,5,3]输出:2或3......
  • Lua 函数
    Lua函数和pythongo函数类似,和java不同,他有多个返回值。函数的本质是复用和功能聚合在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。Lua提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入......
  • C基础笔记(数组)
    数组 声明一个数组,需要指定元素的类型和元素的数量数组都是以0作为它们第一个元素的索引,即0作为第一位存储数据数组是用来存储一系列数据(相同类型的变量)语法: 数组类型 数组名称[整型常量]#include<stdio.h>intmain(){intcj[10];//数组的定义cj......
  • Lua 数据类型
    数据类型是各种语言的基础,本质上无论是Java,python,go,shell,powershell,redis,c#等各种L4的语言,本质上还是C系列。类型和语法基本都是沿用了C的风格进行了重新组装和定义。java人员一定要注意string和nil的特殊性,确实有点别扭。Lua数据类型Lua是动态类型语言,变量不要类型定义,只......
  • java数组
    数组数组是相同类型数据的有序集合数组创建dataType[]arrayName或者dataTypearraName[];效果相同但是前者为首选例如:int[]a=newint[10];//声明+创建分配空间intb[]=newint[10];a[0]=1;//获取数组长度array.length内存分析java内存:堆:存放new的对象和......