Python切片
<div><div>
<h4>一、 Python可切片对象的索引方式</h4>
<p>包括:正索引和负索引两部分,如下图所示,以a = 为例:</p>
<div class="image-package">
<div class="image-container" style="max-width: 464px; max-height: 192px">
<div class="image-view" data-width="464" data-height="192"><img src="https://img2018.cnblogs.com/blog/1480918/201906/1480918-20190618211741232-2019412263.jpg" alt=""></div>
</div>
<div class="image-caption">python索引方式</div>
</div>
<h4>二、 Python切片操作的一般方式</h4>
<p>一个完整的切片表达式包含两个“:”,用于分隔三个参数(start_index、end_index、step),当只有一个“:”时,默认第三个参数step=1。</p>
<pre class="hljs css"><code class="css">切片操作基本表达式:<span class="hljs-selector-tag">object<span class="hljs-selector-attr">
</span></span></code></pre>
<p>step:正负数均可,其绝对值大小决定了切取数据时的‘‘步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以增量1取值。“切取方向非常重要!”“切取方向非常重要!”“切取方向非常重要!”,重要的事情说三遍!</p>
<p>start_index:表示起始索引(包含该索引本身);该参数省略时,表示从对象“端点”开始取值,至于是从“起点”还是从“终点”开始,则由step参数的正负决定,step为正从“起点”开始,为负从“终点”开始。</p>
<p>end_index:表示终止索引(不包含该索引本身);该参数省略时,表示一直取到数据“端点”,至于是到“起点”还是到“终点”,同样由step参数的正负决定,step为正时直到“终点”,为负时直到“起点”。</p>
<h4>三、 Python切片操作详细例子</h4>
<p>以下示例均以列表a = 为例:</p>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a = [<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-number">3, <span class="hljs-number">4, <span class="hljs-number">5, <span class="hljs-number">6, <span class="hljs-number">7, <span class="hljs-number">8, <span class="hljs-number">9]
</span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>1. 切取单个值</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">0]
<span class="hljs-meta">>>><span class="hljs-number">0
<span class="hljs-meta">>>>a[-<span class="hljs-number">4]
<span class="hljs-meta">>>><span class="hljs-number">6
</span></span></span></span></span></span></span></span></code></pre>
<h5>2. 切取完整对象</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-symbol">:] <span class="hljs-comment">#从左往右
<span class="hljs-meta">>>> [<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-number">3, <span class="hljs-number">4, <span class="hljs-number">5, <span class="hljs-number">6, <span class="hljs-number">7, <span class="hljs-number">8, <span class="hljs-number">9]
<span class="hljs-meta">>>>a[<span class="hljs-symbol">:<span class="hljs-symbol">:]<span class="hljs-comment">#从左往右
<span class="hljs-meta">>>> [<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-number">3, <span class="hljs-number">4, <span class="hljs-number">5, <span class="hljs-number">6, <span class="hljs-number">7, <span class="hljs-number">8, <span class="hljs-number">9]
<span class="hljs-meta">>>>a[<span class="hljs-symbol">:<span class="hljs-symbol">:-<span class="hljs-number">1]<span class="hljs-comment">#从右往左
<span class="hljs-meta">>>> [<span class="hljs-number">9, <span class="hljs-number">8, <span class="hljs-number">7, <span class="hljs-number">6, <span class="hljs-number">5, <span class="hljs-number">4, <span class="hljs-number">3, <span class="hljs-number">2, <span class="hljs-number">1, <span class="hljs-number">0]
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>3. start_index和end_index全为正(+)索引的情况</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">1<span class="hljs-symbol">:<span class="hljs-number">6]
<span class="hljs-meta">>>> [<span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-number">3, <span class="hljs-number">4, <span class="hljs-number">5]
step=<span class="hljs-number">1,从左往右取值,start_index=<span class="hljs-number">1到end_index=<span class="hljs-number">6同样表示从左往右取值。
</span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">1<span class="hljs-symbol">:<span class="hljs-number">6<span class="hljs-symbol">:-<span class="hljs-number">1]
<span class="hljs-meta">>>> []
输出为空列表,说明没取到数据。
step=-<span class="hljs-number">1,决定了从右往左取值,而start_index=<span class="hljs-number">1到end_index=<span class="hljs-number">6决定了从左往右取值,两者矛盾,所以为空。
</span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">6<span class="hljs-symbol">:<span class="hljs-number">1]
<span class="hljs-meta">>>> []
同样输出为空列表。
step=<span class="hljs-number">1,决定了从左往右取值,而start_index=<span class="hljs-number">6到end_index=<span class="hljs-number">1决定了从右往左取值,两者矛盾,所以为空。
</span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-symbol">:<span class="hljs-number">6]
<span class="hljs-meta">>>> [<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-number">3, <span class="hljs-number">4, <span class="hljs-number">5]
step=<span class="hljs-number">1,从左往右取值,从“起点”开始一直取到end_index=<span class="hljs-number">6。
</span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-symbol">:<span class="hljs-number">6<span class="hljs-symbol">:-<span class="hljs-number">1]
<span class="hljs-meta">>>> [<span class="hljs-number">9, <span class="hljs-number">8, <span class="hljs-number">7]
step=-<span class="hljs-number">1,从右往左取值,从“终点”开始一直取到end_index=<span class="hljs-number">6。
</span></span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">6<span class="hljs-symbol">:]
<span class="hljs-meta">>>> [<span class="hljs-number">6, <span class="hljs-number">7, <span class="hljs-number">8, <span class="hljs-number">9]
step=<span class="hljs-number">1,从左往右取值,从start_index=<span class="hljs-number">6开始,一直取到“终点”。
</span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">6<span class="hljs-symbol">:<span class="hljs-symbol">:-<span class="hljs-number">1]
<span class="hljs-meta">>>> [<span class="hljs-number">6, <span class="hljs-number">5, <span class="hljs-number">4, <span class="hljs-number">3, <span class="hljs-number">2, <span class="hljs-number">1, <span class="hljs-number">0]
step=-<span class="hljs-number">1,从右往左取值,从start_index=<span class="hljs-number">6开始,一直取到“起点”。
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>4. start_index和end_index全为负(-)索引的情况</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[-<span class="hljs-number">1<span class="hljs-symbol">:-<span class="hljs-number">6]
<span class="hljs-meta">>>> []
step=<span class="hljs-number">1,从左往右取值,而start_index=-<span class="hljs-number">1到end_index=-<span class="hljs-number">6决定了从右往左取值,两者矛盾,所以为空。
索引-<span class="hljs-number">1在-<span class="hljs-number">6的右边(如上图)
</span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[-<span class="hljs-number">1<span class="hljs-symbol">:-<span class="hljs-number">6<span class="hljs-symbol">:-<span class="hljs-number">1]
<span class="hljs-meta">>>> [<span class="hljs-number">9, <span class="hljs-number">8, <span class="hljs-number">7, <span class="hljs-number">6, <span class="hljs-number">5]
step=-<span class="hljs-number">1,从右往左取值,start_index=-<span class="hljs-number">1到end_index=-<span class="hljs-number">6同样是从右往左取值。
索引-<span class="hljs-number">1在<span class="hljs-number">6的右边(如上图)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[-<span class="hljs-number">6<span class="hljs-symbol">:-<span class="hljs-number">1]
<span class="hljs-meta">>>> [<span class="hljs-number">4, <span class="hljs-number">5, <span class="hljs-number">6, <span class="hljs-number">7, <span class="hljs-number">8]
step=<span class="hljs-number">1,从左往右取值,而start_index=-<span class="hljs-number">6到end_index=-<span class="hljs-number">1同样是从左往右取值。
索引-<span class="hljs-number">6在-<span class="hljs-number">1的左边(如上图)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-symbol">:-<span class="hljs-number">6]
<span class="hljs-meta">>>> [<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-number">3]
step=<span class="hljs-number">1,从左往右取值,从“起点”开始一直取到end_index=-<span class="hljs-number">6。
</span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-symbol">:-<span class="hljs-number">6<span class="hljs-symbol">:-<span class="hljs-number">1]
<span class="hljs-meta">>>> [<span class="hljs-number">9, <span class="hljs-number">8, <span class="hljs-number">7, <span class="hljs-number">6, <span class="hljs-number">5]
step=-<span class="hljs-number">1,从右往左取值,从“终点”开始一直取到end_index=-<span class="hljs-number">6。
</span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[-<span class="hljs-number">6<span class="hljs-symbol">:]
<span class="hljs-meta">>>> [<span class="hljs-number">4, <span class="hljs-number">5, <span class="hljs-number">6, <span class="hljs-number">7, <span class="hljs-number">8, <span class="hljs-number">9]
step=<span class="hljs-number">1,从左往右取值,从start_index=-<span class="hljs-number">6开始,一直取到“终点”。
</span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[-<span class="hljs-number">6<span class="hljs-symbol">:<span class="hljs-symbol">:-<span class="hljs-number">1]
<span class="hljs-meta">>>> [<span class="hljs-number">4, <span class="hljs-number">3, <span class="hljs-number">2, <span class="hljs-number">1, <span class="hljs-number">0]
step=-<span class="hljs-number">1,从右往左取值,从start_index=-<span class="hljs-number">6开始,一直取到“起点”。
</span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>5. start_index和end_index正(+)负(-)混合索引的情况</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">1<span class="hljs-symbol">:-<span class="hljs-number">6]
<span class="hljs-meta">>>> [<span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-number">3]
start_index=<span class="hljs-number">1在end_index=-<span class="hljs-number">6的左边,因此从左往右取值,而step=<span class="hljs-number">1同样决定了从左往右取值,因此结果正确
</span></span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">1<span class="hljs-symbol">:-<span class="hljs-number">6<span class="hljs-symbol">:-<span class="hljs-number">1]
<span class="hljs-meta">>>> []
start_index=<span class="hljs-number">1在end_index=-<span class="hljs-number">6的左边,因此从左往右取值,但step=-则决定了从右往左取值,两者矛盾,因此为空。
</span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[-<span class="hljs-number">1<span class="hljs-symbol">:<span class="hljs-number">6]
<span class="hljs-meta">>>> []
start_index=-<span class="hljs-number">1在end_index=<span class="hljs-number">6的右边,因此从右往左取值,但step=<span class="hljs-number">1则决定了从左往右取值,两者矛盾,因此为空。
</span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[-<span class="hljs-number">1<span class="hljs-symbol">:<span class="hljs-number">6<span class="hljs-symbol">:-<span class="hljs-number">1]
<span class="hljs-meta">>>> [<span class="hljs-number">9, <span class="hljs-number">8, <span class="hljs-number">7]
start_index=-<span class="hljs-number">1在end_index=<span class="hljs-number">6的右边,因此从右往左取值,而step=-<span class="hljs-number">1同样决定了从右往左取值,因此结果正确。
</span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>6. 连续切片操作</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-symbol">:<span class="hljs-number">8][<span class="hljs-number">2<span class="hljs-symbol">:<span class="hljs-number">5][-<span class="hljs-number">1<span class="hljs-symbol">:]
<span class="hljs-meta">>>> [<span class="hljs-number">4]
相当于:
a[<span class="hljs-symbol">:<span class="hljs-number">8]=[<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-number">3, <span class="hljs-number">4, <span class="hljs-number">5, <span class="hljs-number">6, <span class="hljs-number">7]
a[<span class="hljs-symbol">:<span class="hljs-number">8][<span class="hljs-number">2<span class="hljs-symbol">:<span class="hljs-number">5]= [<span class="hljs-number">2, <span class="hljs-number">3, <span class="hljs-number">4]
a[<span class="hljs-symbol">:<span class="hljs-number">8][<span class="hljs-number">2<span class="hljs-symbol">:<span class="hljs-number">5][-<span class="hljs-number">1<span class="hljs-symbol">:] = <span class="hljs-number">4
理论上可无限次连续切片操作,只要上一次返回的依然是非空可切片对象。
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>7. 切片操作的三个参数可以用表达式</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">2+<span class="hljs-number">1<span class="hljs-symbol">:<span class="hljs-number">3*<span class="hljs-number">2<span class="hljs-symbol">:<span class="hljs-number">7%<span class="hljs-number">3]
<span class="hljs-meta">>>> [<span class="hljs-number">3, <span class="hljs-number">4, <span class="hljs-number">5]
即:a[<span class="hljs-number">2+<span class="hljs-number">1<span class="hljs-symbol">:<span class="hljs-number">3*<span class="hljs-number">2<span class="hljs-symbol">:<span class="hljs-number">7%<span class="hljs-number">3] = a[<span class="hljs-number">3<span class="hljs-symbol">:<span class="hljs-number">6<span class="hljs-symbol">:<span class="hljs-number">1]
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>8. 其他对象的切片操作</h5>
<p>前面的切片操作说明都以list为例进行说明,但实际上可进行的切片操作的数据类型还有很多,包括元组、字符串等等。</p>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>> (<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-number">3, <span class="hljs-number">4, <span class="hljs-number">5)[<span class="hljs-symbol">:<span class="hljs-number">3]
<span class="hljs-meta">>>> (<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2)
元组的切片操作
</span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>><span class="hljs-string">'ABCDEFG'[<span class="hljs-symbol">:<span class="hljs-symbol">:<span class="hljs-number">2]
<span class="hljs-meta">>>><span class="hljs-string">'ACEG'
字符串的切片操作
</span></span></span></span></span></span></span></code></pre>
<pre class="hljs bash"><code class="bash">>>><span class="hljs-keyword">for i <span class="hljs-keyword">in range(1,100)[-10:]:
<span class="hljs-built_in">print(i)
就是利用range函数生成1-99的整数,然后取3的倍数,再取最后十个。
</span></span></span></code></pre>
<h4>四、 常用切片操作</h4>
<p><strong>以列表:a = 为说明对象</strong></p>
<h5>1.取偶数位置</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>b = a[<span class="hljs-symbol">:<span class="hljs-symbol">:<span class="hljs-number">2]
[<span class="hljs-number">0, <span class="hljs-number">2, <span class="hljs-number">4, <span class="hljs-number">6, <span class="hljs-number">8]
</span></span></span></span></span></span></span></span></span></code></pre>
<h5>2.取奇数位置</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>b = a[<span class="hljs-number">1<span class="hljs-symbol">:<span class="hljs-symbol">:<span class="hljs-number">2]
[<span class="hljs-number">1, <span class="hljs-number">3, <span class="hljs-number">5, <span class="hljs-number">7, <span class="hljs-number">9]
</span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>3.拷贝整个对象</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>b = a[<span class="hljs-symbol">:] <span class="hljs-comment">#★★★★★
<span class="hljs-meta">>>>print(b) <span class="hljs-comment">#
<span class="hljs-meta">>>>print(id(a)) <span class="hljs-comment">#41946376
<span class="hljs-meta">>>>print(id(b)) <span class="hljs-comment">#41921864
或
<span class="hljs-meta">>>>b = a.copy()
<span class="hljs-meta">>>>print(b) <span class="hljs-comment">#
<span class="hljs-meta">>>>print(id(a)) <span class="hljs-comment">#39783752
<span class="hljs-meta">>>>print(id(b)) <span class="hljs-comment">#39759176
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>需要注意的是:[:]和.copy()都属于“浅拷贝”,只拷贝最外层元素,内层嵌套元素则通过引用,而不是独立分配内存。</p>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a = [<span class="hljs-number">1,<span class="hljs-number">2,[<span class="hljs-string">'A',<span class="hljs-string">'B']]
<span class="hljs-meta">>>>print(<span class="hljs-string">'a={}'.format(a))
<span class="hljs-meta">>>>b = a[<span class="hljs-symbol">:]
<span class="hljs-meta">>>>b[<span class="hljs-number">0] = <span class="hljs-number">9 <span class="hljs-comment">#修改b的最外层元素,将1变成9
<span class="hljs-meta">>>>b[<span class="hljs-number">2][<span class="hljs-number">0] = <span class="hljs-string">'D' <span class="hljs-comment">#修改b的内嵌层元素
<span class="hljs-meta">>>>print(<span class="hljs-string">'a={}'.format(a))
<span class="hljs-meta">>>>print(<span class="hljs-string">'b={}'.format(b))
<span class="hljs-meta">>>>print(<span class="hljs-string">'id(a)={}'.format(id(a)))
<span class="hljs-meta">>>>print(<span class="hljs-string">'id(b)={}'.format(id(b)))
a=[<span class="hljs-number">1, <span class="hljs-number">2, [<span class="hljs-string">'A', <span class="hljs-string">'B']] <span class="hljs-comment">#原始a
a=[<span class="hljs-number">1, <span class="hljs-number">2, [<span class="hljs-string">'D', <span class="hljs-string">'B']] <span class="hljs-comment">#b修改内部元素A为D后,a中的A也变成了D,说明共享内部嵌套元素,但外部元素1没变。
b=[<span class="hljs-number">9, <span class="hljs-number">2, [<span class="hljs-string">'D', <span class="hljs-string">'B']] <span class="hljs-comment">#修改后的b
id(a)=<span class="hljs-number">38669128
id(b)=<span class="hljs-number">38669192
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>4.修改单个元素</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">3] = [<span class="hljs-string">'A',<span class="hljs-string">'B']
[<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, [<span class="hljs-string">'A', <span class="hljs-string">'B'], <span class="hljs-number">4, <span class="hljs-number">5, <span class="hljs-number">6, <span class="hljs-number">7, <span class="hljs-number">8, <span class="hljs-number">9]
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>5.在某个位置插入元素</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">3<span class="hljs-symbol">:<span class="hljs-number">3] = [<span class="hljs-string">'A',<span class="hljs-string">'B',<span class="hljs-string">'C']
[<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-string">'A', <span class="hljs-string">'B', <span class="hljs-string">'C', <span class="hljs-number">3, <span class="hljs-number">4, <span class="hljs-number">5, <span class="hljs-number">6, <span class="hljs-number">7, <span class="hljs-number">8, <span class="hljs-number">9]
<span class="hljs-meta">>>>a[<span class="hljs-number">0<span class="hljs-symbol">:<span class="hljs-number">0] = [<span class="hljs-string">'A',<span class="hljs-string">'B']
[<span class="hljs-string">'A', <span class="hljs-string">'B', <span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-number">3, <span class="hljs-number">4, <span class="hljs-number">5, <span class="hljs-number">6, <span class="hljs-number">7, <span class="hljs-number">8, <span class="hljs-number">9]
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h5>6.替换一部分元素</h5>
<pre class="hljs ruby"><code class="ruby"><span class="hljs-meta">>>>a[<span class="hljs-number">3<span class="hljs-symbol">:<span class="hljs-number">6] = [<span class="hljs-string">'A',<span class="hljs-string">'B']
[<span class="hljs-number">0, <span class="hljs-number">1, <span class="hljs-number">2, <span class="hljs-string">'A', <span class="hljs-string">'B', <span class="hljs-number">6, <span class="hljs-number">7, <span class="hljs-number">8, <span class="hljs-number">9]
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h4>五、 总结</h4>
<p>(一)start_index、end_index、step可同为正、同为负,也可正负混合使用。但必须遵循一个原则,否则无法正确切取到数据:当start_index的位置在end_index的左边时,表示从左往右取值,此时step必须是正数(同样表示从左往右);当start_index的位置在end_index的右边时,表示从右往左取值,此时step必须是负数(同样表示从右往左),即两者的取值顺序必须是相同的。对于特殊情况,当start_index或end_index省略时,起始索引和终止索引由step的正负来决定,不会存在取值方向出现矛盾的情况(即不会返回空列表[]),但正和负取到的结果是完全不同的,因为一个向左一个向右。</p>
<p>(二)在利用切片时,step的正负是必须要考虑的,尤其是当step省略时。比如a[-1:],很容易就误认为是从“终点”开始一直取到“起点”,即a[-1:]= ,但实际上a[-1:]=a[-1]=9,原因在于step=1表示从左往右取值,而起始索引start_index=-1本身就是对象的最右边的元素了,再往右已经没数据了,因此只有a[-1]一个元素。</p>
</div>
</div><br><br>
来源:https://www.cnblogs.com/kiko-sunrise/p/11047869.html
頁:
[1]