<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                {% raw %} # Tcl 列表 > 原文: [https://zetcode.com/lang/tcl/lists/](https://zetcode.com/lang/tcl/lists/) 在 Tcl 教程的這一部分中,我們將討論列表。 計算機程序可以處理數據。 處理數據組是一項基本的編程操作。 在 Tcl 中,列表是基本數據結構。 它是有價物品的有序集合。 列表中的項目用空格隔開。 列表中的每個項目均由其索引標識。 列表沒有固定的長度。 列表元素可以是字符串,數字,變量,文件或其他列表。 我們可以將列表嵌套到其他任何深度的列表中。 ## 創建列表 我們可以通過多種方式在 Tcl 中創建列表。 ```tcl #!/usr/bin/tclsh set l1 { 1 2 3 } set l2 [list one two three] set l3 [split "1.2.3.4" .] puts $l1 puts $l2 puts $l3 ``` 創建了三個列表,并將它們的元素打印到控制臺。 ```tcl set l1 { 1 2 3 } ``` 創建列表的基本方法是將列表的元素放在大括號內。 列表元素由空格分隔。 ```tcl set l2 [list one two three] ``` 創建列表的另一種方法是使用`list`命令。 ```tcl set l3 [split "1.2.3.4" .] ``` 一些 Tcl 命令作為結果返回一個列表。 在上面的代碼行中,`split`命令返回從字符串生成的數字列表。 ```tcl $ ./createlists.tcl 1 2 3 one two three 1 2 3 4 ``` `createlists.tcl`腳本的輸出。 ## `llength`命令 `llength`命令計算列表中的元素數。 ```tcl #!/usr/bin/tclsh puts [llength { 1 2 3 4 }] puts [llength {}] puts [llength { 1 2 {3 4} }] puts [llength { 1 2 {} 3 4 }] ``` 該腳本計算四個列表的長度。 ```tcl puts [llength { 1 2 3 4 }] ``` 該列表包含四個元素,因此,有 4 個被打印到控制臺。 ```tcl puts [llength {}] ``` 此列表為空; `llength`命令返回 0。 ```tcl puts [llength { 1 2 {3 4} }] ``` 此列表包含一個內部列表– {3 4}。 內部列表占一個元素。 ```tcl puts [llength { 1 2 {} 3 4 }] ``` 空列表也計入一個元素。 ```tcl $ ./list_length.tcl 4 0 3 5 ``` `list_length.tcl`示例的輸出。 ## 檢索元素 列表元素檢索有三個基本命令:`lindex`,`lrange`和`lassign`。 ```tcl #!/usr/bin/tclsh set vals { 2 4 6 8 10 12 14 } puts [lindex $vals 0] puts [lindex $vals 3] puts [lindex $vals end] puts [lindex $vals end-2] ``` 該代碼示例使用`lindex`命令從指定索引處的列表中檢索元素。 ```tcl puts [lindex $vals 0] puts [lindex $vals 3] ``` Tcl 列表索引從 0 開始。上述命令在位置 1 和 4 處打印列表的元素。 ```tcl puts [lindex $vals end] puts [lindex $vals end-2] ``` `end`字符串表示最后一個元素的索引。 也可以從中減去一個整數。 ```tcl $ ./retrieving.tcl 2 8 14 10 ``` 這是`retrieving.tcl`腳本的輸出。 下一個代碼示例說明`lrange`和`lassign`命令。 ```tcl #!/usr/bin/tclsh puts [lrange { a b c d e } 2 4] puts [lrange { a b c d e } 1 end] lassign { a b c } x y z puts "$x $y $z" ``` `lrange`命令返回由兩個索引指定的列表的一部分。 `lassign`命令將列表中的值分配給指定的變量。 ```tcl puts [lrange { a b c d e } 2 4] puts [lrange { a b c d e } 1 end] ``` 在這里,我們打印列表的兩個子列表。 ```tcl lassign { a b c } x y z puts "$x $y $z" ``` 使用`lassign`命令,我們將列表元素分配給三個變量。 ```tcl $ ./retrieving2.tcl c d e b c d e a b c ``` 這是`retrieving2.tcl`腳本的輸出。 ## 遍歷列表 現在我們已經定義了列表和基本的列表操作,我們想遍歷列表元素。 我們展示了幾種瀏覽列表項的方法。 ```tcl #!/usr/bin/tclsh foreach item {1 2 3 4 5 6 7 8 9} { puts $item } ``` 我們使用`foreach`命令瀏覽列表元素。 `item`變量的每個循環周期都有數字列表中的下一個值。 ```tcl $ ./traverse1.tcl 1 2 3 4 5 6 7 8 9 ``` 示例的輸出。 在第二個示例中,我們將使用`while`循環查看日期名稱。 ```tcl #!/usr/bin/tclsh set days [list Monday Tuesday Wednesday Thursday \ Friday Saturday Sunday] set n [llength $days] set i 0 while {$i < $n} { puts [lindex $days $i] incr i } ``` 我們使用`while`循環遍歷列表。 在使用`while`循環時,我們還需要一個計數器和列表中的項目數。 ```tcl set days [list Monday Tuesday Wednesday Thursday \ Friday Saturday Sunday] ``` `list`命令用于創建日期列表。 ```tcl set n [llength $days] ``` 列表的長度由`llength`命令確定。 ```tcl set i 0 ``` 這是一個柜臺。 ```tcl while {$i < $n} { puts [lindex $days $i] incr i } ``` `while`循環執行主體中的命令,直到計數器等于列表中的元素數為止。 ```tcl puts [lindex $days $i] ``` `lindex`從計數器指向的列表中返回一個值。 ```tcl incr i ``` 計數器增加。 ```tcl $ ./traverse2.tcl Monday Tuesday Wednesday Thursday Friday Saturday Sunday ``` 示例的輸出。 ## `lmap`命令 可以使用`lmap`命令瀏覽列表中的元素。 這是一個函數式命令。 `lmap`命令遍歷一個或多個列表中的所有元素并收集結果。 ```tcl #!/usr/bin/tclsh set vals { 1 2 3 4 5 6 } puts [lmap a $vals {expr {$a ** 2}}] ``` 該示例將`lmap`應用于整數列表。 ```tcl puts [lmap a $vals {expr {$a ** 2}}] ``` 函數式的`lmap`命令將表達式在其主體中應用于`vals`列表的每個元素。 返回包含新的平方整數列表的結果。 ```tcl $ ./lmap_cmd.tcl 1 4 9 16 25 36 ``` 示例的輸出。 ## 插入元素 下一個示例將元素插入 Tcl 列表。 `lappend`命令將元素添加到列表的末尾; 它修改了原始列表。 `linsert`命令在指定的索引處插入元素; 它不會修改原始列表,但會返回一個新列表。 ```tcl #!/usr/bin/tclsh set nums {4 5 6} puts $nums lappend nums 7 8 9 puts $nums puts [linsert $nums 0 1 2 3] puts $nums ``` 我們列出了三個數字。 ```tcl lappend nums 7 8 9 ``` `lappend`將數據附加到列表。 原始列表已更改。 ```tcl puts [linsert $nums 0 1 2 3] ``` `linsert`在給定索引處插入元素。 第一個數字是索引。 其余值是要插入列表中的數字。 該命令創建一個新列表并返回它; 它不會修改原始列表。 ```tcl $ ./inserting.tcl 4 5 6 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 4 5 6 7 8 9 ``` 這是`operations.tcl`腳本的輸出。 在下面的示例中,我們將連接列表,搜索項目并替換列表中的項目。 ```tcl #!/usr/bin/tclsh set animals1 { lion eagle elephant dog cat } set animals2 { giraffe tiger horse dolphin } set animals [concat $animals1 $animals2] puts $animals puts [lsearch -exact $animals eagle] puts [lreplace $animals 3 4 buffalo crocodile] ``` 我們定義了兩個動物列表。 我們介紹了三個新命令。 ```tcl set animals [concat $animals1 $animals2] ``` `concat`命令用于連接(添加)兩個列表。 上一行連接了兩個列表,新列表設置為`animal`變量。 ```tcl puts [lsearch -exact $animals eagle] ``` 使用`lsearch`命令,我們在列表中尋找鷹。 使用`-exact`選項,我們可以尋找完全匹配的內容。 該命令返回第一個匹配元素的索引,如果沒有匹配,則返回 -1。 ```tcl puts [lreplace $animals 3 4 buffalo crocodile] ``` `lreplace`命令用水牛和鱷魚代替了狗和貓。 ```tcl $ ./operations2.tcl lion eagle elephant dog cat giraffe tiger horse dolphin 1 lion eagle elephant buffalo crocodile giraffe tiger horse dolphin ``` 這是示例輸出。 ## 排序項目 在本節中,我們將展示如何對 Tcl 列表中的項目進行排序。 ```tcl #!/usr/bin/tclsh set names { John Mary Lenka Veronika Julia Robert } set nums { 1 5 4 3 6 7 9 2 11 0 8 2 3 } puts [lsort $names] puts [lsort -ascii $names] puts [lsort -ascii -decreasing $names] puts [lsort -integer -increasing $nums] puts [lsort -integer -decreasing $nums] puts [lsort -integer -unique $nums] ``` 要對列表元素進行排序,我們可以使用`sort`命令。 該命令不會修改原始列表。 它返回一個新的元素排序列表。 ```tcl set names { John Mary Lenka Veronika Julia Robert } set nums { 1 5 4 3 6 7 9 2 11 0 8 2 3 } ``` 我們有兩個列表。 在第一個數字中,我們有字符串,在第二個數字中。 ```tcl puts [lsort $names] puts [lsort -ascii $names] ``` 默認排序是 ASCII 排序。 元素按其在 ASCII 表中的位置排序。 ```tcl puts [lsort -integer -increasing $nums] puts [lsort -integer -decreasing $nums] ``` 我們將值視為整數,然后按升序和降序對其進行排序。 ```tcl puts [lsort -integer -unique $nums] ``` 我們在數字上下文中以遞增順序對列表中的元素進行排序。 重復項將被刪除。 ```tcl $ ./sorting.tcl John Julia Lenka Mary Robert Veronika John Julia Lenka Mary Robert Veronika Veronika Robert Mary Lenka Julia John 0 1 2 2 3 3 4 5 6 7 8 9 11 11 9 8 7 6 5 4 3 3 2 2 1 0 0 1 2 3 4 5 6 7 8 9 11 ``` 這是`sorting.tcl`腳本的輸出。 ## 嵌套列表 在 Tcl 中可以有嵌套列表-其他列表中的列表。 ```tcl #!/usr/bin/tclsh set nums {1 2 {1 2 3 4} {{1 2} {3 4}} 3 4} puts [llength $nums] puts [llength [lindex $nums 2]] puts [lindex $nums 0] puts [lindex [lindex $nums 2] 1] puts [lindex [lindex [lindex $nums 3] 1] 1] ``` 這是一個在 Tcl 中具有嵌套列表的簡單示例。 ```tcl set nums {1 2 {1 2 3 4} {{1 2} {3 4}} 3 4} ``` `nums`是帶有兩個嵌套列表的列表。 第二個嵌套列表還有兩個附加的內部嵌套列表。 ```tcl puts [llength $nums] ``` 我們確定列表的大小。 嵌套列表被視為一個元素。 ```tcl puts [llength [lindex $nums 2]] ``` 在此行中,我們確定第一個嵌套列表的大小,這是主列表的第三個元素。 ```tcl puts [lindex $nums 0] ``` 在這里,我們打印主列表的第一個元素。 ```tcl puts [lindex [lindex $nums 2] 1] ``` 在上一行中,我們獲得了第一個嵌套列表的第二個元素。 ```tcl puts [lindex [lindex [lindex $nums 3] 1] 1] ``` 在這里,我們獲得內部列表的第二個內部列表的第二個元素,它們位于主列表的第 4 個位置。 換句話說:最里面的命令首先執行。 `[lindex $nums 3]`返回`{{1 2} {3 4}}`。 現在,第二個命令在此返回列表上運行。 `[lindex {{1 2} {3 4}} 1]`表達式返回`{3 4}`。 最后,最后一條命令`[lindex {3 4} 1]`返回 4,該命令被打印到終端上。 ```tcl $ ./nestedlists.tcl 6 4 1 2 4 ``` 示例的輸出。 可以使用更簡單的語法來檢索嵌套列表的元素。 ```tcl #!/usr/bin/tclsh set nums { 1 2 {1 2 3 {4 5}} 3 4 } puts [lindex $nums 0] puts [lindex $nums 2 1] puts [lindex $nums 2 3 1] ``` 索引跟隨`lindex`命令的第一個參數,從最外面的列表的索引開始。 ```tcl $ ./nestedlists2.tcl 1 2 5 ``` 示例的輸出。 在 Tcl 教程的這一部分中,我們介紹了 Tcl 列表。 {% endraw %}
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看