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

我知道在 Python 中很容易实现:someList[1:2] 但是在 Lua 中如何实现呢?这段代码会给我语法错误。

点赞
用户1847592
用户1847592
{ unpack(someList, from_index, to_index) }

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

2013-03-05 13:53:15
用户1190388
用户1190388

Lua 中内置的 unpack 函数可以帮助您完成此操作:

返回给定表的元素。

您也可以使用下面的代码:

x, y = someList[1], someList[2]

来获得相同的结果。但是该方法无法应用于不同长度的 lua-table

用法

table.unpack (list [, i [, j]])

从给定表中返回元素。此函数等同于

return list[i], list[i+1], ···, list[j]

默认情况下,i 为 _1_,j 为 **#list**。

一个 codepad 链接展示了相同操作的运行情况。

2013-03-05 14:03:04
用户254477
用户254477

在 Lua 中,与 Python 稍有不同的等价代码如下:

someList = { 'a', 'b', 'c' , 'd' }
subList = { unpack( someList, 2, 2 ) }
print( unpack(subList) )

重要的是,unpack 返回“多个返回值”而不是表格,因此要在 Lua 中获得列表(又名表格),您需要使用 {} 将结果转换为表格。

但是,您不能在 Lua 中打印表格,但可以打印多个返回值,因此要获得有意义的输出,您需要再次对其进行解包。

因此,与模拟多个返回值的 Python 不同,Lua 真正具有多个返回值。


:在后续版本的 Lua 中,unpack 变为 table.unpack

2018-06-11 15:24:00