Tcl列表排序命令之lsort

2021-09-20 03:57:34 字數 1654 閱讀 7226

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 stridelength

tcl8.6起,如果指定了此選項,則將列表中stridelength個元素視為一組,這些組按組中的第乙個元素進行排序或者在使用-index選項時,按每組中-index指定的索引處的元素進行排序。元素在其組中始終保持相同的位置。要注意的是:列表長度必須是stridelength的整數倍,並且最小為2。

-nocase

比較時不區分大小寫。與-dictionary、-integer、-real選項同時使用時無效。

-unique

如果指定了此選項,則只保留列表中找到的最後一組重複元素。是否重複取決於排序時使用的比較方法。

set list1 

lsort $list1

lsort -nocase $list1

lsort -dictionary $list1

lsort -indices $list1

lsort -indices -decreasing $list1

set list2 }

lsort -index 1 $list2

lsort -integer -index 1 $list1

set list3

lsort -stride 2 $list3

lsort -stride 2 -index 1 -integer $list3

lsort -nocase $list1

set list4 }

lsort -unique $list4

lsort -unique -index 1 $list4

Tcl陣列命令之array

array option arrayname arg1 arg2 argn?操作名為arrayname的陣列,option選項決定了執行什麼操作。option支援以下選項 array set arrayname list向陣列中新增乙個或多個元素,list由偶數個元素組成。奇數個元素被視為陣列的索引...

Tcl正則命令之regexp

regexp switches?exp str matchvar?submatchvar submatchvar 判斷正規表示式exp是否匹配部分或全部字串str,如果匹配返回1,否則返回0。如果在str後面指定了其他引數,則視為變數的名稱,其中儲存的是str中匹配exp的部分。matchvar儲存...

Python玩轉列表之排序

一般情況下我們建立的列表中的元素可能都是無序的,但有些時候我們需要對列表元素進行排序。例如,我們想將參加會議的專家名單guests列表中的五個名字元素 zhang san li si wang wu sun qi qian ba 分別按照首字母從小到大的順序和從大到小的順序分別排序。排序後的輸出分別...