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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 切片 取一個list或tuple的部分元素是非常常見的操作。比如,一個list如下: ``` >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] ``` 取前3個元素,應該怎么做? 笨辦法: ``` >>> [L[0], L[1], L[2]] ['Michael', 'Sarah', 'Tracy'] ``` 之所以是笨辦法是因為擴展一下,取前N個元素就沒轍了。 取前N個元素,也就是索引為0-(N-1)的元素,可以用循環: ``` >>> r = [] >>> n = 3 >>> for i in range(n): ... r.append(L[i]) ... >>> r ['Michael', 'Sarah', 'Tracy'] ``` 對這種經常取指定索引范圍的操作,用循環十分繁瑣,因此,Python提供了切片(Slice)操作符,能大大簡化這種操作。 對應上面的問題,取前3個元素,用一行代碼就可以完成切片: ``` >>> L[0:3] ['Michael', 'Sarah', 'Tracy'] ``` `L[0:3]`表示,從索引`0`開始取,直到索引`3`為止,但不包括索引`3`。即索引`0`,`1`,`2`,正好是3個元素。 如果第一個索引是`0`,還可以省略: ``` >>> L[:3] ['Michael', 'Sarah', 'Tracy'] ``` 也可以從索引1開始,取出2個元素出來: ``` >>> L[1:3] ['Sarah', 'Tracy'] ``` 類似的,既然Python支持`L[-1]`取倒數第一個元素,那么它同樣支持倒數切片,試試: ``` >>> L[-2:] ['Bob', 'Jack'] >>> L[-2:-1] ['Bob'] ``` 記住倒數第一個元素的索引是`-1`。 切片操作十分有用。我們先創建一個0-99的數列: ``` >>> L = list(range(100)) >>> L [0, 1, 2, 3, ..., 99] ``` 可以通過切片輕松取出某一段數列。比如前10個數: ``` >>> L[:10] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ``` 后10個數: ``` >>> L[-10:] [90, 91, 92, 93, 94, 95, 96, 97, 98, 99] ``` 前11-20個數: ``` >>> L[10:20] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] ``` 前10個數,每兩個取一個: ``` >>> L[:10:2] [0, 2, 4, 6, 8] ``` 所有數,每5個取一個: ``` >>> L[::5] [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95] ``` 甚至什么都不寫,只寫`[:]`就可以原樣復制一個list: ``` >>> L[:] [0, 1, 2, 3, ..., 99] ``` tuple也是一種list,唯一區別是tuple不可變。因此,tuple也可以用切片操作,只是操作的結果仍是tuple: ``` >>> (0, 1, 2, 3, 4, 5)[:3] (0, 1, 2) ``` 字符串`'xxx'`也可以看成是一種list,每個元素就是一個字符。因此,字符串也可以用切片操作,只是操作結果仍是字符串: ``` >>> 'ABCDEFG'[:3] 'ABC' >>> 'ABCDEFG'[::2] 'ACEG' ``` 在很多編程語言中,針對字符串提供了很多各種截取函數(例如,substring),其實目的就是對字符串切片。Python沒有針對字符串的截取函數,只需要切片一個操作就可以完成,非常簡單。 ## 小結 有了切片操作,很多地方循環就不再需要了。Python的切片非常靈活,一行代碼就可以實現很多行循環才能完成的操作。 ## 參考源碼 [do_slice.py](https://github.com/michaelliao/learn-python3/blob/master/samples/advance/do_slice.py)
                  <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>

                              哎呀哎呀视频在线观看