Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-types/list-type/ Documentation version: v5.3.2 # 列表 列表类型是一个复合数据类型,可使用关键字`LIST`或`ARRAY`声明。其中,`E`代表列表元素的数据类型。列表元素可以是任意预定义数据类型,也可以是除记录和路径外的复合数据类型。 一个列表是一个有序的元素集合,每个元素可以通过其位置被访问。一个列表中的所有元素必须数据类型相同。例如,一个整数列表不能包含字符串值。 ## 列表索引 列表索引是通过其位置访问列表中的元素的过程,这些位置称为列表索引。 列表的索引从 0 开始。从左到右第一个元素的索引为 0,第二个元素的索引为 1,以此类推。 负索引可用于访问列表的末尾元素。最后一个元素的索引为 -1,倒数第二个元素的索引为 -2,以此类推。 如果索引超出范围,将返回`NULL`。 ### 示例 ```` LET l=[1,2,4,5] RETURN l[0] AS a , l[-1] AS b, l[100] AS c ```` ## 列表切片 列表切片是从列表中提取子集的过程。 列表切片的语法为`list[start:end:step]`,其中`start`是要包含的第一个元素的索引,`end`是要包含的最后一个元素的索引,`step`是步长。 三个参数都是可选的。如果未指定`start`,则默认值为 0。如果未指定`end`,则默认值为列表的长度。如果未指定`step`,则默认值为 1。 `step`的取值不能为 0。如果`step`取值为负数,则列表将以相反的顺序遍历。 在以下情况下,切片的结果为空列表: - `step`为正数,且`start`的值大于`end`的值。 - `start`的值大于列表的长度。 - `start`的值为负数,且其绝对值大于列表的长度。 ### 示例 ```` LET l=[0,1,2,3,4] RETURN l[0:2] AS a, l[0::2] AS b, l[::] AS c, l[::-2] AS d, l[-1:-3:-1] AS e, l[1:0] AS f, l[1:1] AS g, l[6:10] AS h ```` ## 声明示例 ```` ''' CREATE GRAPH TYPE IF NOT EXISTS person AS { NODE Person ( { id INT64 PRIMARY KEY, is_adult BOOL DEFAULT TRUE, name STRING DEFAULT 'John Doe', hobbies LIST DEFAULT ['reading', 'swimming'], birthday DATE DEFAULT DATE('1990-01-01') } ) } ''' ```` 在上述示例中,属性`hobbies`的数据类型为列表(`LIST`),列表元素的数据类型为字符串(`STRING`),默认值为`['reading', 'swimming']`。 ## 更多信息 [列表函数](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/functions/list/)