Python切片,python切片舉例_Python 切片徹底理解

 2023-11-19 阅读 30 评论 0

摘要:From:https://www.jianshu.com/p/15715d6f4dad在利用python解決各種實際問題的過程中,經常會遇到從某個對象中抽取部分值的情況,切片操作正是專門用于完成這一操作的有力武器。理論上而言,只要條件表達式得當,可以通過單次或多次切片操作實

From:https://www.jianshu.com/p/15715d6f4dad

在利用python解決各種實際問題的過程中,經常會遇到從某個對象中抽取部分值的情況,切片操作正是專門用于完成這一操作的有力武器。理論上而言,只要條件表達式得當,可以通過單次或多次切片操作實現任意切取目標值。切片操作的基本語法比較簡單,但如果不徹底搞清楚內在邏輯,也極容易產生錯誤,而且這種錯誤有時隱蔽得比較深,難以察覺。本文通過詳細例子總結歸納了切片操作的各種情況。若有錯誤和不足之處請大牛指正!

一、 Python可切片對象的索引方式

包括:正索引和負索引兩部分,如下圖所示,以a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]為例:

Python切片?python索引方式.jpg

二、 Python切片操作的一般方式

一個完整的切片表達式包含兩個“:”,用于分隔三個參數(start_index、end_index、step),當只有一個“:”時,默認第三個參數step=1。

step:正負數均可,其絕對值大小決定了切取數據時的‘‘步長”,而正負號決定了“切取方向”,正表示“從左往右”取值,負表示“從右往左”取值。當step省略時,默認為1,即從左往右以增量1取值。“切取方向非常重要!”“切取方向非常重要!”“切取方向非常重要!”,重要的事情說三遍!

start_index:表示起始索引(包含該索引本身);該參數省略時,表示從對象“端點”開始取值,至于是從“起點”還是從“終點”開始,則由step參數的正負決定,step為正從“起點”開始,為負從“終點”開始。

python切片負數,end_index:表示終止索引(不包含該索引本身);該參數省略時,表示一直取到數據“端點”,至于是到“起點”還是到“終點”,同樣由step參數的正負決定,step為正時直到“終點”,為負時直到“起點”。

三、 Python切片操作詳細例子

以下示例均以列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]為例:

1. 切取單個值

2. 切取完整對象

python切片語法、3. start_index和end_index全為正(+)索引的情況

4. start_index和end_index全為負(-)索引的情況

5. start_index和end_index正(+)負(-)混合索引的情況

6. 連續切片操作

7. 切片操作的三個參數可以用表達式

python有什么用,8. 其他對象的切片操作

前面的切片操作說明都以list為例進行說明,但實際上可進行的切片操作的數據類型還有很多,包括元組、字符串等等。

四、 常用切片操作

以列表:a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 為說明對象

1.取偶數位置

python和java,2.取奇數位置

3.拷貝整個對象

需要注意的是:[:]和.copy()都屬于“淺拷貝”,只拷貝最外層元素,內層嵌套元素則通過引用,而不是獨立分配內存。

4.修改單個元素

5.在某個位置插入元素

python切片函數,6.替換一部分元素

五、 總結

(一)start_index、end_index、step可同為正、同為負,也可正負混合使用。但必須遵循一個原則,否則無法正確切取到數據:當start_index的位置在end_index的左邊時,表示從左往右取值,此時step必須是正數(同樣表示從左往右);當start_index的位置在end_index的右邊時,表示從右往左取值,此時step必須是負數(同樣表示從右往左),即兩者的取值順序必須是相同的。對于特殊情況,當start_index或end_index省略時,起始索引和終止索引由step的正負來決定,不會存在取值方向出現矛盾的情況(即不會返回空列表[]),但正和負取到的結果是完全不同的,因為一個向左一個向右。

(二)在利用切片時,step的正負是必須要考慮的,尤其是當step省略時。比如a[-1:],很容易就誤認為是從“終點”開始一直取到“起點”,即a[-1:]= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],但實際上a[-1:]=a[-1]=9,原因在于step=1表示從左往右取值,而起始索引start_index=-1本身就是對象的最右邊的元素了,再往右已經沒數據了,因此只有a[-1]一個元素

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/181626.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息