<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之旅 廣告
                [TOC=1,5] >[success] # 雙向隊列 雙向隊運行處理速度較快,從隊列兩端添加或彈出數據元素的復雜程度 O(1),列表的復雜程度為O(N) <a href="https://wiki.python.org/moin/TimeComplexity">參考鏈接</a> 一個deque(雙端隊列)在內部被表示為一個雙鏈表。(好吧,是數組而不是對象的列表,以提高效率。)兩端都是可訪問的,但即使是在中間看也是很慢的,而且從中間添加或刪除也會更慢。 ![](https://box.kancloud.cn/6deddcc7f94fce47c051176685b36a6f_368x292.png) >[info] ## 基本使用 `collections` -- `收集的意思` >[danger] ##### deque-maxlen 設置長度 先進先出 ~~~ from collections import deque d = deque(maxlen=3) d.extend(['a','b','c','d','e']) print(d) 打印結果: deque(['c', 'd', 'e'], maxlen=3) ~~~ >[danger] ##### deque-append 右添加數據 * 添加速度O(1) ~~~ from collections import deque d = deque() d.append(1) d.append(2) print(d) 打印結果: deque([1, 2]) ~~~ >[danger] ##### deque-appendleft 左添加數據 * 添加速度O(1) ~~~ from collections import deque d = deque() d.append(1) d.append(2) d.appendleft(3) print(d) 打印結果: deque([3, 1, 2]) ~~~ >[danger] ##### deque-clear 清除數據 ~~~ from collections import deque d = deque() d.append(1) d.append(2) d.clear() print(d) 打印結果: deque([]) ~~~ >[danger] ##### deque-copy(淺拷貝) * copy速度 O(n) ~~~ from collections import deque d = deque() d.append(1) d.append(2) new_d = d.copy() print(new_d) 打印結果: deque([1, 2]) ~~~ >[danger] ##### deque-count(返回指定元素的出現次數) ~~~ from collections import deque d = deque() d.append(1) d.append(3) d.append(3) print(d.count(3)) 打印結果: 2 ~~~ >[danger] ##### deque-extend(從隊列右邊擴展一個列表的元素) * 添加速度等于 添加列表決定O(K) ~~~ from collections import deque d = deque() d.append(1) d.append(3) d.append(3) d.extend([1,5,6]) print(d) 打印結果: deque([1, 3, 3, 1, 5, 6]) ~~~ >[danger] ##### deque-extendleft(從隊列左邊擴展一個列表的元素) * 添加速度等于 添加列表決定O(K) ~~~ from collections import deque d = deque() d.append(1) d.append(3) d.append(3) d.extendleft([1,5,6]) print(d) 打印結果注意添加的列表順序也反過來了: deque([6, 5, 1, 1, 3, 3]) ~~~ >[danger] ##### deque-index(查找某個元素的索引位置) ~~~ from collections import deque d = deque() d.append(1) d.append(3) d.append(4) d.append(3) print(d) print(d.index(3)) # 相同時值顯示第一個的位置 print(d.index(3,2,4)) # 指定查找區間 打印結果: deque([1, 3, 4, 3]) 1 3 ~~~ >[danger] ##### deque-insert(在指定位置插入元素) ~~~ from collections import deque d = deque() d.extend(['a','b','c','d','e']) d.insert(2,'z') print(d) 打印結果: deque(['a', 'b', 'z', 'c', 'd', 'e']) ~~~ >[danger] ##### deque-pop(獲取最右邊一個元素,并在隊列中刪除) * 刪除速度等于 添加列表決定O(1) ~~~ from collections import deque d = deque() d.extend(['a','b','c','d','e']) d.pop() print(d) 打印結果: deque(['a', 'b', 'c', 'd']) ~~~ >[danger] ##### deque-popleft(獲取最左邊一個元素,并在隊列中刪除) * 刪除速度等于 添加列表決定O(1) ~~~ from collections import deque d = deque() d.extend(['a','b','c','d','e']) d.popleft() print(d) 打印結果: deque(['b', 'c', 'd', 'e']) ~~~ >[danger] ##### deque-remove(刪除指定元素) * 刪除速度等于 添加列表決定O(K) ~~~ import collections d = collections.deque() d.extend(['a','b','c','d','e']) d.remove('c') print(d) 打印結果: deque(['a', 'b', 'd', 'e']) ~~~ >[danger] ##### deque-reverse(隊列反轉) ~~~ import collections d = collections.deque() d.extend(['a','b','c','d','e']) d.reverse() print(d) 輸出: deque(['e', 'd', 'c', 'b', 'a']) ~~~ >[danger] ##### deque-rotate(把右邊元素放到左邊) * 速度等于 添加列表決定O(K) ~~~ from collections import deque d = deque() d.extend(['a','b','c','d','e']) d.rotate(2) # 數字決定右面幾個變成左面 print(d) 輸出: deque(['d', 'e', 'a', 'b', 'c']) ~~~ >[success] # 案例 >[danger] ##### 關鍵詞匹配成功后,打印匹配前的內容和匹配內容 ~~~ from collections import deque def search(lines,pattern,history=5): previous_lines = deque(maxlen=history) for line in lines: # 匹配成功才返回,匹配內容 if pattern in line: yield line,previous_lines previous_lines.append(line) print(previous_lines) with open("somefile.txt") as f: # 匹配成功了 yield 中才有對應的返回值 for line,prevlines in search(f,"python",5): for pline in prevlines: print(pline,end=" ") print(line,end='') print("-"*20) ~~~
                  <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>

                              哎呀哎呀视频在线观看