python負數報錯 Python中列表的切片

2021-10-18 11:05:41 字數 2158 閱讀 2363

切片(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...