<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Python 的列表數據類型包含更多的方法。這里是所有的列表對象方法: `list.append(_x_)` 把一個元素添加到鏈表的結尾,相當于?a[len(a):]?=?[x]。 `list.extend(_L_)` 將一個給定列表中的所有元素都添加到另一個列表中,相當于?a[len(a):]?=?L。 `list.insert(_i_,?_x_)` 在指定位置插入一個元素。第一個參數是準備插入到其前面的那個元素的索引,例如a.insert(0,?x)?會插入到整個鏈表之前,而?a.insert(len(a),?x)?相當于?a.append(x)。 ~~~ list.remove(_x_) ~~~ 刪除鏈表中值為?_x_?的第一個元素。如果沒有這樣的元素,就會返回一個錯誤。 `list.pop([_i_])` 從鏈表的指定位置刪除元素,并將其返回。如果沒有指定索引,a.pop()?返回最后一個元素。元素隨即從鏈表中被刪除(方法中?_i_?兩邊的方括號表示這個參數是可選的,而不是要求你輸入一對方括號,你會經常在Python 庫參考手冊中遇到這樣的標記)。 `list.index(_x_)` 返回鏈表中第一個值為?_x_?的元素的索引。如果沒有匹配的元素就會返回一個錯誤。 `list.count(_x_)` 返回?_x_?在鏈表中出現的次數。 `list.sort()` 對鏈表中的元素就地進行排序。 `list.reverse()` 就地倒排鏈表中的元素。 下面這個示例演示了鏈表的大部分方法: ~~~ >>> a = [66.25, 333, 333, 1, 1234.5] >>> print(a.count(333), a.count(66.25), a.count('x')) 2 1 0 >>> a.insert(2, -1) >>> a.append(333) >>> a [66.25, 333, -1, 333, 1, 1234.5, 333] >>> a.index(333) 1 >>> a.remove(333) >>> a [66.25, -1, 333, 1, 1234.5, 333] >>> a.reverse() >>> a [333, 1234.5, 1, 333, -1, 66.25] >>> a.sort() >>> a [-1, 1, 66.25, 333, 333, 1234.5] ~~~ 也許大家會發現像?insert,?remove?或者?sort?這些修改列表的方法沒有打印返回值–它們返回None。在 python 中對所有可變的數據類型這是統一的設計原則。 ### 5.1.1\. 把鏈表當作堆棧使用 鏈表方法使得鏈表可以很方便的做為一個堆棧來使用,堆棧作為特定的數據結構,最先進入的元素最后一個被釋放(后進先出)。用?append()?方法可以把一個元素添加到堆棧頂。用不指定索引的pop()?方法可以把一個元素從堆棧頂釋放出來。例如: ~~~ >>> stack = [3, 4, 5] >>> stack.append(6) >>> stack.append(7) >>> stack [3, 4, 5, 6, 7] >>> stack.pop() 7 >>> stack [3, 4, 5, 6] >>> stack.pop() 6 >>> stack.pop() 5 >>> stack [3, 4] ~~~ ### 5.1.2\. 把鏈表當作隊列使用 你也可以把鏈表當做隊列使用,隊列作為特定的數據結構,最先進入的元素最先釋放(先進先出)。不過,列表這樣用效率不高。相對來說從列表末尾添加和彈出很快;在頭部插入和彈出很慢(因為,為了一個元素,要移動整個列表中的所有元素)。 要實現隊列,使用?collections.deque,它為在首尾兩端快速插入和刪除而設計。例如: ~~~ >>> from collections import deque >>> queue = deque(["Eric", "John", "Michael"]) >>> queue.append("Terry") # Terry arrives >>> queue.append("Graham") # Graham arrives >>> queue.popleft() # The first to arrive now leaves 'Eric' >>> queue.popleft() # The second to arrive now leaves 'John' >>> queue # Remaining queue in order of arrival deque(['Michael', 'Terry', 'Graham']) ~~~ ### 5.1.3\. 列表推導式 列表推導式為從序列中創建列表提供了一個簡單的方法。普通的應用程式通過將一些操作應用于序列的每個成員并通過返回的元素創建列表,或者通過滿足特定條件的元素創建子序列。 例如, 假設我們創建一個 squares 列表, 可以像下面方式: ~~~ >>> squares = [] >>> for x in range(10): ... squares.append(x**2) ... >>> squares [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] ~~~ 我們同樣能夠達到目的采用下面的方式: ~~~ squares = [x**2 for x in range(10)] ~~~ 這也相當于?squares?=?map(lambda?x:?x**2,?range(10)),但是上面的方式顯得簡潔以及具有可讀性。 列表推導式由包含一個表達式的括號組成,表達式后面跟隨一個?for?子句,之后可以有零或多個for?或?if?子句。結果是一個列表,由表達式依據其后面的?for?和?if?子句上下文計算而來的結果構成。 例如,如下的列表推導式結合兩個列表的元素,如果元素之間不相等的話: ~~~ >>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] ~~~ 等同于: ~~~ >>> combs = [] >>> for x in [1,2,3]: ... for y in [3,1,4]: ... if x != y: ... combs.append((x, y)) ... >>> combs [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] ~~~ 值得注意的是在上面兩個方法中的?for?和?if?語句的順序。 如果想要得到一個元組,必須要加上括號: ~~~ >>> vec = [-4, -2, 0, 2, 4] >>> # create a new list with the values doubled >>> [x*2 for x in vec] [-8, -4, 0, 4, 8] >>> # filter the list to exclude negative numbers >>> [x for x in vec if x >= 0] [0, 2, 4] >>> # apply a function to all the elements >>> [abs(x) for x in vec] [4, 2, 0, 2, 4] >>> # call a method on each element >>> freshfruit = [' banana', ' loganberry ', 'passion fruit '] >>> [weapon.strip() for weapon in freshfruit] ['banana', 'loganberry', 'passion fruit'] >>> # create a list of 2-tuples like (number, square) >>> [(x, x**2) for x in range(6)] [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)] >>> # the tuple must be parenthesized, otherwise an error is raised >>> [x, x**2 for x in range(6)] File "", line 1, in ? [x, x**2 for x in range(6)] ^ SyntaxError: invalid syntax >>> # flatten a list using a listcomp with two 'for' >>> vec = [[1,2,3], [4,5,6], [7,8,9]] >>> [num for elem in vec for num in elem] [1, 2, 3, 4, 5, 6, 7, 8, 9] ~~~ 列表推導式可使用復雜的表達式和嵌套函數: ~~~ >>> from math import pi >>> [str(round(pi, i)) for i in range(1, 6)] ['3.1', '3.14', '3.142', '3.1416', '3.14159'] ~~~ ### 5.1.4\. 嵌套的列表推導式 列表推導式可以嵌套。 考慮以下的 3x4 矩陣, 一個列表中包含三個長度為4的列表: ~~~ >>> matrix = [ ... [1, 2, 3, 4], ... [5, 6, 7, 8], ... [9, 10, 11, 12], ... ] ~~~ 現在,如果你想交換行和列,可以用嵌套的列表推導式: ~~~ >>> [[row[i] for row in matrix] for i in range(4)] [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] ~~~ 像前面看到的,嵌套的列表推導式是對?for?后面的內容進行求值,所以上例就等價于: ~~~ >>> transposed = [] >>> for i in range(4): ... transposed.append([row[i] for row in matrix]) ... >>> transposed [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] ~~~ 反過來說,如下也是一樣的: ~~~ >>> transposed = [] >>> for i in range(4): ... # the following 3 lines implement the nested listcomp ... transposed_row = [] ... for row in matrix: ... transposed_row.append(row[i]) ... transposed.append(transposed_row) ... >>> transposed [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] ~~~ 在實際中,你應該更喜歡使用內置函數組成復雜流程語句。對此種情況?zip()?函數將會做的更好: ~~~ >>> list(zip(*matrix)) [(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)] ~~~ 更多關于本行中使用的星號的說明,參考?[_參數列表的分拆_](http://www.pythondoc.com/pythontutorial3/controlflow.html#tut-unpacking-arguments)。
                  <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>

                              哎呀哎呀视频在线观看