切片(slice)用來獲取列表中的片段,即原始列表的子列表。切片用被方括號「」括起來且用冒號「:」分隔的數字來表示:
>>> fruits[0:3] # 獲取列表中的前3項
>>> fruits[-2:-1] # 使用負數切片
['strawberry']
注意,切片包含索引項的起始值,而不包含結束值。因此,使用切片fruits[0:3]獲取的是fruits列表的前3項,如圖所示。
使用負數切片fruits[-2:-1]獲取的是fruits列表的倒數第2項,如圖所示。
初學者可能會認為切片也包含索引項的結束值,從而獲取到錯誤的切片。例如,嘗試獲取列表的全部項:
>>> fruits[0:4] # 錯誤的切片,只能獲取到列表中的前4項
>>> fruits[0:5] # 正確的切片,獲取列表的全部項
1.1 超出列表範圍的切片
如果嘗試獲取超出列表範圍的切片,python直譯器不會報錯,而是返回乙個空列表:
>>> fruits[100:200]
同樣,如果切片中索引項的起始值大於結束值,python直譯器同樣不會報錯,而是返回乙個空列表:
>>> fruits[3:0]
1.2 切片的簡寫
切片的簡寫分為以下三種情況:
①省略索引項的起始值,語法格式為「列表名[:結束值]」,與「列表名[0:結束值]」是等價的。
②省略索引項的結束值,語法格式為「列表名[起始值:]」,與「列表名[起始值:列表長度]」是等價的。
③省略索引項的起始值和結束值,即獲取列表的全部項,語法格式為「列表名[:]」,與「列表名[0:列表長度]」是等價的。
下面是一些切片簡寫的示例:
>>> fruits[:3] # 獲取列表中的前3項
>>> fruits[-2:] # 獲取列表中的後2項
['strawberry', 'orange']
>>> fruits[:] # 獲取列表的全部項
前文提到過,fruits[-2:-1]獲取的是倒數第2項,如果試圖獲取倒數第1項:
>>> # 這兩種方式在此處是等價的
>>> fruits[-1:]
['orange']
>>> fruits[-1:5]
['orange']
1.3 指定切片的步長
在執行切片操作時,可以指定步長,步長的值也用冒號來分隔。步長能夠跳過不想要獲取的項。為了更容易地看出步長的工作方式,重新建立乙個包含從0到9的整數列表:
>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
步長的預設值為1,即乙個挨著乙個,前面使用過的切片全都是這樣。下面兩種寫法是等價的:
>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> numbers[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> numbers[::1]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
如果指定的步長大於1,那麼會跳過一些項。當切片的步長為2時,會跳過1項;當切片的步長為3時,會跳過2項:
>>> numbers[::2]
[0, 2, 4, 6, 8]
>>> numbers[::3]
[0, 3, 6, 9]
索引值可以為負數,同樣步長也可以為負數。當步長為負數時,列表從後向前取。當切片的步長為-1時,即為反轉列表;當切片的步長為-2時,會反轉列表並跳過1項:
>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> numbers[::-1] # 步長為-1
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> numbers[::-2] # 步長為-2
[9, 7, 5, 3, 1]
python class函式報錯 Python類
建立乙個類 class person pass p person print p 類以class 宣告 self變數 這個定義與c 的this指標,都是指向物件示例本身,但使用起來是不一樣的。可以看到函式定義的時候,都要帶乙個self引數。這是因為python直譯器會預設將物件本身作為引數傳入函式。...
python負數的處理
python中的整形以補碼形式儲存。正數儲存是本身,負數的儲存形式是原碼的二進位制表示加上個負號。負數的補碼 負數 0xffffffff 負數補碼轉換為負數形式 a 0xffffffff print bin 3 0b11 print bin 3 0xffffffff 0b11111111111111...
python引數報錯 python 報錯資訊彙總
1.userwarning data validation extendion is not supported and will be removed 可能原因 第三方包與當前python版本不匹配,有部分擴充套件功能無法使用 2.non default parameter follows def...