<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在Python中,切片(slice)是對序列型物件(如list, string, tuple)的一種高階索引方法。 普通索引只取出序列中 一個下標 對應的元素,而切片取出序列中 一個範圍 對應的元素,這裡的範圍不是狹義上的連續片段。通俗一點就是在一定範圍裡面.用刀切出一部分,達到自己需要的一部分.
以 a = [ 1,2,3,4,5,6,7,8,9] 為例,正索引和負索引
一個完整的切片是包含三個引數和兩個冒號" : " ,用於分隔三個引數(start_index、end_index、step)。當只有一個“:”時,預設第三個引數step=1;當一個“:”也沒有時,start_index=end_index,表示切取start_index指定的那個元素。
切片操作的基本表示式:object[start:end:step]
start:切片的起始位置,如果沒有值的話從頭開始.
end:切片的結束位置,但不包含end(前閉後開),如果沒有值的話表示切割到結束為止.
step:步長,預設取值為1,如果步長為正數的情況表示從左往右,反正若為負數則表示從右往左. step的正負決定切的方向,這一點需要尤為注意!!!
>> a = [1,2,3,4,5,6] >>> a[0] ##單個數,代表位數,第0位就是a裡面的第一位 1 >>> a[5]##a裡面的第5位,注意要從0作為第一位開始數 6
>>> b=[6,3,6,7,8,2,5,4] >>> b[:] ##單獨一個冒號,代表從頭取到尾,步長預設為1 [6, 3, 6, 7, 8, 2, 5, 4] >>> b[::]##單獨兩個冒號一樣代表從頭取到尾,步長預設為1 [6, 3, 6, 7, 8, 2, 5, 4] >>> b[::-1]##注意,兩個冒號後面是步長,步長為1,故應從右往左取 [4, 5, 2, 8, 7, 6, 3, 6]
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[1:6] ##預設步長為1,從左往右,注意前閉後開 [1, 2, 3, 4, 5] >>> a[1:6:-1] [] ## 當取值的大小方向與步長的方向衝突時,返回值是空. >>> a[6:1:-1] [6, 5, 4, 3, 2] >>> a[:6] ## 沒有star代表從頭開始取 [0, 1, 2, 3, 4, 5] >>> a[:6:-1] [9, 8, 7] >>> a[6:] [6, 7, 8, 9] >>> a[6::-1] [6, 5, 4, 3, 2, 1, 0]
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[:-6] ## -6意思是從右往左數的第六位,故第六位是4,然後預設步長為1(從右往左),star未寫,故從頭開始取到4 [0, 1, 2, 3] >>> a[-1:-6] [] >>> a[-1:-6:-1] [9, 8, 7, 6, 5] >>> a[-6:-1] ## 這個是從-6取到-1,步長為1,意思是從右往左數第6位到從右往左的第一位 [4, 5, 6, 7, 8] >>> a[:-6:-1] ## 這個是從0取到-6,步長為-1,因為開頭是冒號,故起點被隱藏了 [9, 8, 7, 6, 5] >>> a[-6:] [4, 5, 6, 7, 8, 9] >>> a[-6::-1] ## 注意這個不等於[-6:-1],區別是這裡是::(兩個冒號),兩個冒號後連線的是步長 [4, 3, 2, 1, 0]
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[1:-6] [1, 2, 3] >>> a[1:-6:-1] [] >>> a[-1:6] [] >>> a[-1:6:-1] [9, 8, 7]
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[:8][2:5][-1:] ## [:8]就是0取到8,在從其中取2到5,最後取-1位 [4] a[:8] ---- [0,1,2,3,4,5,6,7] [0,1,2,3,4,5,6,7][2:5]----[2,3,4] [2,3,4][-1:] ----[4]
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[1+2:2*3:7%2] ## 思路一樣,運算出來,繼續切 [3, 4, 5]
>>> t = (1,2,3,4,5) >>> t[1:3] (2, 3) >>> s = "ACDRF" ##切片在字母上也是可以使用的,所以說切片很強大 >>> s[1:3] 'CD' >>> (0, 1, 2, 3, 4, 5)[:3]#元組的切片操作 >>> (0, 1, 2) >>> for i in range(0,100): ... print(i) ... >>> for i in range(0,100)[2::3][-10:]: ## 意思是從第二位開始取,步長為3,[-10]則是從倒數10位開始取,意思是去末尾10位. ... print(i) ... 71 74 77 80 83 86 89 92 95 98
早期的Python直譯器僅支援上述a[start:stop]形式的基本切片,後來加入了下面要介紹的切片形式,擴充套件切片的名稱也流傳下來,實際上不用擔心,這早已是Python所支援的標準語法。
擴充套件切片指的是這樣的切片形式:a[start:stop:step],其中step是一個非零整數,即比簡單切片多了調整步長的功能,此時切片的行為可概括為:從start對應的位置出發,以step為步長索引序列,直至越過stop對應的位置,且不包括stop本身。事實上,簡單切片就是step=1的擴充套件切片的特殊情況。需要詳細解釋的是step分別為正數和負數的兩種情況。
step為正數
當step為正數時,切片行為很容易理解,start和stop的截斷和預設規則也與簡單切片完全一致:
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[0:6:2] [0, 2, 4] >>> a[::2] [0, 2, 4, 6, 8] >>> a[:-2:2] [0, 2, 4, 6] >>> a[4::2] [4, 6, 8]
step為負數
當step為負數時,切片將其解釋為從start出發以步長|step|逆序索引序列,此時,start和stop的截斷依然遵循前述規則,但預設發生一點變化,因為我們說過,在預設的情況下,Python的行為是儘可能取最大區間,此時存取是逆序的,start應儘量取大,stop應儘量取小,才能保證區間最大,因此:
按照擴充索引範圍的觀點, start的預設值是 無窮大(), stop的預設值是 無窮小()
>>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[5::-1] [5, 4, 3, 2, 1, 0] >>> a[:4:-2] [9, 7, 5] >>> a[::-1] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
1.如果進行切片操作的時候,超出下標不會報錯
2.如果切片操作的時候方向相互矛盾的話,不會報錯,返回為空
3.在python中進行反向輸出列表
第一種: 迴圈 第二種 :[::-1] 第三種:reverse()
到此這篇關於Python中切片詳細操作的文章就介紹到這了,更多相關Python切片操作內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45