列表操作。
概要
Reading
list(LENGTH <list> <out-var>)
list(GET <list> <element index> [<index> ...] <out-var>)
list(JOIN <list> <glue> <out-var>)
list(SUBLIST <list> <begin> <length> <out-var>)
Search
list(FIND <list> <value> <out-var>)
Modification
list(APPEND <list> [<element>...])
list(FILTER <list> {INCLUDE | EXCLUDE} REGEX <regex>)
list(INSERT <list> <index> [<element>...])
list(POP_BACK <list> [<out-var>...])
list(POP_FRONT <list> [<out-var>...])
list(PREPEND <list> [<element>...])
list(REMOVE_ITEM <list> <value>...)
list(REMOVE_AT <list> <index>...)
list(REMOVE_DUPLICATES <list>)
list(TRANSFORM <list> <ACTION> [...])
Ordering
list(REVERSE <list>)
list(SORT <list> [...])
注意:
- 当指定索引值时,如果< element index >大于等于0,则从列表的开始处进行索引,0表示列表的第一个元素。
- 如果< element index >的值小于或等于-1,则从列表的末尾开始索引,其中-1表示列表的最后一个元素。
- 当使用负索引计数时要小心:它们不是从0开始的。-0等价于0,list的第一个元素。
读取
list(LENGTH <list> <output variable>)
返回列表的长度。
list(GET <list> <element index> [<element index> ...] <output variable>)
返回由列表中的索引指定的元素的列表。
list(JOIN <list> <glue> <output variable>)
3.12新版功能。
返回一个使用glue字符串连接所有列表元素的字符串。要连接多个不属于列表的字符串,使用join操作符from string()命令。
list(SUBLIST <list> <begin> <length> <output variable>)
3.12新版功能。
返回给定列表的子列表。
- 如果< length >是0,则返回一个空列表。
- 如果< length >为-1,或者列表小于< begin >+< length >,则返回列表中从< begin >开始的其余元素。
查找
list(FIND <list> <value> <output variable>)
返回列表中指定元素的索引,如果没有找到则返回-1。
修改
list(APPEND <list> [<element> ...])
向列表添加元素。
list(FILTER <list> <INCLUDE|EXCLUDE> REGEX <regular_expression>)
3.6新版功能。
从列表中包含或删除(filter)匹配模式模式的项。在REGEX模式下,条目将根据给定的正则表达式进行匹配。
有关正则表达式的更多信息,请查看string(REGEX)。
list(INSERT <list> <element_index> <element> [<element> ...])
将列表中的元素插入到指定位置。
list(POP_BACK <list> [<out-var>...])
版本3.15中的新功能。
如果没有给定变量名,则只删除一个元素。否则,将最后一个元素的值赋给给定的变量并将其删除,直到给定的最后一个变量名为止。
list(POP_FRONT <list> [<out-var>...])
3.15新版功能。
如果没有给出变量名,则只删除一个元素。否则,将第一个元素的值赋给给定的变量并删除它,直到最后一个给定的变量名。
list(PREPEND <list> [<element> ...])
3.15新版功能。
将元素插入到列表的第0个位置。
list(REMOVE_ITEM <list> <value> [<value> ...])
从列表中删除给定项的所有实例。
list(REMOVE_AT <list> <index> [<index> ...])
从列表中删除给定索引处的项。
list(REMOVE_DUPLICATES <list>)
删除列表中重复的项。保留项的相对顺序,但如果遇到重复项,则只保留第一个实例。
list(TRANSFORM <list> <ACTION> [<SELECTOR>]
[OUTPUT_VARIABLE <output variable>])
3.12新版功能。
通过对所有元素应用操作,或者通过指定,对列表中选定的元素进行转换,将结果存储在原位或存储在指定的输出变量中。
注意,TRANSFORM子命令并没有改变列表中的元素数量。如果指定了,那么只会改变一些元素,其他的元素将保持转换前的相同。
< ACTION >指定要应用于列表元素的操作。这些操作的语义与string()命令的子命令完全相同操作。< ACTION >值必须是以下之一:
- APPEND,PREPEND:将指定的值附加到列表的每个元素。
list(TRANSFORM <list> <APPEND|PREPEND> <value> ...)
- TOUPPER, TOLOWER: 转换为大、小写
list(TRANSFORM <list> <TOLOWER|TOUPPER> ...)
- STRIP:从列表的每个元素中删除前导空格和尾随空格。
list(TRANSFORM <list> STRIP ...)
- GENEX_STRIP:从列表的每个元素中删除生成器表达式。
list(TRANSFORM <list> GENEX_STRIP ...)
- REPLACE:尽可能多次匹配正则表达式,并将替换表达式替换为列表中每个元素的匹配(语义与REGEX REPLACE from string()命令相同)。
list(TRANSFORM <list> REPLACE <regular_expression>
<replace_expression> ...)
< SELECTOR >确定要转换列表中的哪些元素。一次只能指定一种类型的选择器。给定时,< SELECTOR >必须是以下之一:
- AT:指定一个索引列表。
list(TRANSFORM <list> <ACTION> AT <index> [<index> ...] ...)
- FOR:指定一个范围,可选地使用一个增量来遍历该范围。
list(TRANSFORM <list> <ACTION> FOR <start> <stop> [<step>] ...)
- REGEX:指定正则表达式。只有匹配正则表达式的元素才会被转换。
list(TRANSFORM <list> <ACTION> REGEX <regular_expression> ...)
顺序
list(REVERSE <list>)
反转列表的内容。
list(SORT <list> [COMPARE <compare>] [CASE <case>] [ORDER <order>])
按字母顺序对列表进行适当的排序。
3.13新版功能:添加了COMPARE、CASE和ORDER选项。
3.18新版功能:添加了COMPARE NATURAL选项。
使用COMPARE关键字选择排序的比较方法。< compare >选项应该是以下选项之一:
- STRING:按字母顺序排列字符串列表。如果没有给出COMPARE选项,这是默认行为。
- FILE_BASENAME:按基名对文件路径名列表进行排序。
- NATURAL:使用自然顺序对字符串列表进行排序(参见strverscmp(3) manual),即连续的数字作为整数进行比较。例如:下面的列表10.0 1.1 2.1 8.0 2.0 3.1将被排序为1.1 2.0 2.1 3.1 8.0 10.0,如果选择了NATURAL比较,它将被排序为1.1 10.0 2.0 2.1 3.1 8.0 8.0与STRING比较。
使用CASE关键字选择区分大小写或不区分大小写的排序模式。< case >选项应该是以下选项之一:
- SENSITIVE:列表项区分大小写。如果没有给出CASE选项,这是默认行为。
- INSENSITIVE:列表项不区分大小写。没有指定仅以大写/小写区分的项的顺序。
要控制排序顺序,可以给出order关键字。< order >选项应该是以下选项之一:
- ASCENDING:将列表按升序排序。这是没有给出ORDER选项时的默认行为。
- DESCENDING:将列表按降序排序。