在Lua中获取列表或表的一部分

sda*_*hek 10 lua lua-table

我知道用Python做起来很容易:someList[1:2] 但你在Lua中怎么做?该代码给我一个语法错误.

Ego*_*off 15

{unpack(someList, from_index, to_index)}
Run Code Online (Sandbox Code Playgroud)

但是表索引将从而1不是从表开始from_index


hjp*_*r92 10

unpackLua内置的功能可以为您完成这项工作:

返回给定表中的元素.

你也可以使用

x, y = someList[1], someList[2]
Run Code Online (Sandbox Code Playgroud)

为了相同的结果.但是这种方法不能应用于不同长度的.

用法

table.unpack (list [, i [, j]])
Run Code Online (Sandbox Code Playgroud)

返回给定表中的元素.这个功能相当于

return list[i], list[i+1], ···, list[j]
Run Code Online (Sandbox Code Playgroud)

默认情况下,i1并且j#list.

一个键盘连接到显示相同的工作.


Sle*_*led 5

完全等同于Python

someList = [ 'a', 'b', 'c', 'd' ]
subList = someList[1:2]
print( subList )    
Run Code Online (Sandbox Code Playgroud)

在 Lua

someList = { 'a', 'b', 'c' , 'd' }
subList = { unpack( someList, 2, 2 ) }
print( unpack(subList) )
Run Code Online (Sandbox Code Playgroud)

关键的一点是,unpack返回“多个结果”这是不是一个表,因此要获得在Lua列表(又名表),你需要“tablify”,结果{}

但是,您无法在 Lua 中打印表格,但您可以打印多个结果,因此要获得有意义的输出,您需要再次解包。

因此,与使用列表模拟多个返回的 Python 不同,Lua真正拥有它们。


在 Lua 的后续版本中,Nbunpack变成了table.unpack