国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python進階之全面解讀高級特性之切片

2020-02-16 01:14:15
字體:
來源:轉載
供稿:網友

眾所周知,我們可以通過索引值(或稱下標)來查找序列類型(如字符串、列表、元組…)中的單個元素,那么,如果要獲取一個索引區間的元素該怎么辦呢?

切片(slice)就是一種截取索引片段的技術,借助切片技術,我們可以十分靈活地處理序列類型的對象。通常來說,切片的作用就是截取序列對象,然而,對于非序列對象,我們是否有辦法做到切片操作呢?在使用切片的過程中,有什么要點值得重視,又有什么底層原理值得關注呢?本文將主要跟大家一起來探討這些內容,希望我能與你共同學習進步。

1、切片的基礎用法

列表是 Python 中極為基礎且重要的一種數據結構,也是最能發揮切片的用處的一種數據結構,所以在前兩節,我將以列表為例介紹切片的一些常見用法。

首先是切片的書寫形式:[i : i+n : m] ;其中,i 是切片的起始索引值,為列表首位時可省略;i+n 是切片的結束位置,為列表末位時可省略;m 可以不提供,默認值是1,不允許為0 ,當m為負數時,列表翻轉。注意:這些值都可以大于列表長度,不會報越界。

切片的基本含義是:從序列的第i位索引起,向右取到后n位元素為止,按m間隔過濾 。

li = [1, 4, 5, 6, 7, 9, 11, 14, 16]# 以下寫法都可以表示整個列表,其中 X >= len(li)li[0:X] == li[0:] == li[:X] == li[:] == li[::] == li[-X:X] == li[-X:]li[1:5] == [4,5,6,7] # 從1起,取5-1位元素li[1:5:2] == [4,6] # 從1起,取5-1位元素,按2間隔過濾li[-1:] == [16] # 取倒數第一個元素li[-4:-2] == [9, 11] # 從倒數第四起,取-2-(-4)=2位元素li[:-2] == li[-len(li):-2] == [1,4,5,6,7,9,11] # 從頭開始,取-2-(-len(li))=7位元素# 步長為負數時,列表先翻轉,再截取li[::-1] == [16,14,11,9,7,6,5,4,1] # 翻轉整個列表li[::-2] == [16,11,7,5,1] # 翻轉整個列表,再按2間隔過濾li[:-5:-1] == [16,14,11,9] # 翻轉整個列表,取-5-(-len(li))=4位元素li[:-5:-3] == [16,9] # 翻轉整個列表,取-5-(-len(li))=4位元素,再按3間隔過濾# 切片的步長不可以為0li[::0] # 報錯(ValueError: slice step cannot be zero)

上述的某些例子對于初學者(甚至很多老手)來說,可能還不好理解,但是它們都離不開切片的基本語法,所以為方便起見,我將它們也歸入基礎用法中。

對于這些樣例,我個人總結出兩條經驗:

(1)牢牢記住公式[i : i+n : m],當出現缺省值時,通過想象把公式補全;

(2)索引為負且步長為正時,按倒數計算索引位置;索引為負且步長為負時,先翻轉列表,再按倒數計算索引位置。

2、切片的高級用法

一般而言,切片操作的返回結果是一個新的獨立的序列。以列表為例,列表切片后得到的還是一個列表,占用新的內存地址。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 襄樊市| 勐海县| 山东省| 昌黎县| 成武县| 阿合奇县| 大邑县| 沛县| 驻马店市| 连南| 阳泉市| 霍邱县| 武宁县| 通山县| 古丈县| 菏泽市| 兴化市| 沙坪坝区| 龙胜| 海城市| 兴仁县| 淮北市| 炎陵县| 横山县| 延寿县| 英山县| 平凉市| 交城县| 桐庐县| 汾西县| 汾阳市| 巴楚县| 新兴县| 额济纳旗| 崇仁县| 大名县| 岳西县| 恩施市| 东安县| 桑植县| 永昌县|