Tcl列表排序命令之lsort

lsort ?options? list

对列表中的元素进行排序,返回排序后的新列表。默认情况下以ascii的顺序递增排序。options支持以下选项:

选项说明
-ascii字符串比较。
-dictionary字典比较。与-asii相同,除了两点:1.除非字母为排序的关键点,否则忽略大小写。如aBc会排在abb和abc之间。2.如果两个字符串嵌入了数字,数字会按整数比较,而不是字符。如a10b在a9b和a11b之间。
-integer将列表元素转换为整数并使用整数比较。
-real将列表元素转换为浮点值并使用浮点数比较。
-command cmds使用cmds作为比较命令。由cmds命令组成的脚本附加两个元素作为额外参数,脚本需要在第一个元素大于、等于或小于第二个元素时分别返回一个大于、等于或小于零的整数。
-increasing按递增顺序对列表进行排序。
-decreasing按递减顺序对列表进行排序
-indices返回排序后的列表索引,而不是排序后的值。
-index indexList如果指定了此选项,但是没有使用-stride选项,则列表中每个元素本身必须是一个合适的Tcl子列表。lsort将从每个子列表中提取第indexList个元素进行比较,而不是基于整个子列表进行排序。如果子列表中还包含子列表,则indexList还可以是索引的列表,解析方式与lindex相同,并且支持string index。
-stride strideLengthTcl8.6起,如果指定了此选项,则将列表中strideLength个元素视为一组,这些组按组中的第一个元素进行排序或者在使用-index选项时,按每组中-index指定的索引处的元素进行排序。元素在其组中始终保持相同的位置。要注意的是:列表长度必须是strideLength的整数倍,并且最小为2。
-nocase比较时不区分大小写。与-dictionary、-integer、-real选项同时使用时无效。
-unique如果指定了此选项,则只保留列表中找到的最后一组重复元素。是否重复取决于排序时使用的比较方法。
set list1 {aBc abc abb}
lsort $list1
lsort -nocase $list1
lsort -dictionary $list1
lsort -indices $list1
lsort -indices -decreasing $list1
set list2 {{a 10} {b 1} {c 3}}
lsort -index 1 $list2
lsort -integer -index 1 $list1
set list3 {a 10 b 1 c 3}
lsort -stride 2 $list3
lsort -stride 2 -index 1 -integer $list3
lsort -nocase $list1
set list4 {{a 1} {b 1} {c 3}}
lsort -unique $list4
lsort -unique -index 1 $list4
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值