tcltk实例详解——列表操作(三)

    列表操作在脚本中使用的频率非常高,基本上每个脚本都会涉及到其中的一些操作,在这里对列表的命令进行实例解析,以加深对列表命令的理解,本文涉及的命令为lappend、lreplace、lset、linsert、lsort和lreverse。
 
     lappend varName ? value value value ...?
    在列表后面添加元素,常用的命令,lappend命令接收一个变量名(这里需要注意,必须是变量名而不是变量),将元素添加到变量后面,变量会被修改:
    % set myList {This is a}
    This is a
    % lappend myList tcltk example
    This is a tcltk example
    % puts $myList
    This is a tcltk example
    由以上可以看出,变量myList已经被修改了,在tcl中如果命令中传入的是变量名一般结果都修改变量,传入的是变量值都不会修改变量本身。
 
     lreplace list first last ? element element ...?
    将索引为first到last的元素替换为后面的元素:
    % lreplace {This is a tcltk example} 2 2 another
    This is another tcltk example
    % lreplace {This is a tcltk example} 2 3 another TCLTK
    This is another TCLTK example
 
     lset varName ?index...? newValue
    这个命令和lappand一样接收一个变量名作为参数,也会修改变量的值,将列表中的指定索引项目修改为指定值,如果不指定索引项就把列表整个换为新的值:
    % set myList {This is a tcltk example}
    This is a tcltk example
    % lset myList 2 another
    This is another tcltk example
    % puts $myList
    This is another tcltk example
    如果没有指定索引,就相当于直接赋值:
    % lset myList {no index}
    no index
 
     linsert list index element ? element element ...?
    这个命令插入元素到列表的index索引位,产生一个新的列表:
    % linsert {This is example} 2 a tcltk
    This is a tcltk example
 
     lsort ? options? list 
    为列表排序。
    按照ASCII码顺序排序,这个是默认状态:
    % lsort -ascii {b A c B a C}
    A B C a b c
    按照字典顺序排序:
    % lsort -dictionary {b A c B a C}
    A a B b C c
    按照整数排序,要求列表里面的元素都能正确转化为整数:
    % lsort -integer {11 13 15 56}
    11 13 15 56
    按照浮点数排序,要求列表里面的元素都能够正确转化为浮点数:
    % lsort -real {11.1 22.2 14.3}
    11.1 14.3 22.2
    按照命令排序,命令体必须是接收两个参数的命令,结果返回大于、小于或者等于0分别代表两个元素相比较是大于、小于还是等于关系,利用此关系进行排序:
    % lsort -command {string compare}  {b A c B a C}
    A B C a b c
    按照升序排列,这是默认形式:
    % lsort -increasing {b A c B a C}
    A B C a b c
    按照降序排列:
    % lsort -decreasing {b A c B a C}
    c b a C B A
    返回排序后的元素在原列表中的索引:
    % lsort -indices {b A c B a C}
    1 3 5 4 0 2
    根据子列表排序,每个元素必须是一个命令能够正确识别的子列表,-index 1表示根据子列表的第二个元素来排序:
    % lsort -index 1 {{b A} {c B} {a C}}
    {b A} {c B} {a C}
    忽略大小写:
    % lsort -nocase {b A c B a C}
    A a b B c C
 
     lreverse list
    返回一个列表,列表为原列表的反序形式:
    % lreverse {This is a tcltk example}
    example tcltk a is This

你可能感兴趣的:(tcltk实例详解——列表操作(三))