python 切片 Python 列表切片

2021-10-11 01:23:10 字數 1560 閱讀 3724

想必很多人都使用過列表的切片,通過切片可以從列表中獲取乙個或多個元素,但你真的了解切片?

一、一般玩法

>>> name = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

>>> name[0:2]# 獲取 0 - 2 中間的元素,不包括索引為 2 的元素

['a', 'b']

>>> name[:2]# 從 0 開始切,可省略 0

['a', 'b']

>>> name[1:]# 同樣地,切到最後乙個也可以省略最後的元素索引

['b', 'c', 'd', 'e', 'f', 'g', 'h']

二、列表步長

列表切片實際上還可以接收第三個引數:步長(預設情況為 1),來試試將其改為 2 會有說明變化?

>>> name[1:6:2]# 每隔 2 個元素才取出乙個來

['b', 'd', 'f']

>>> name[::2]# 如果是從頭到尾切,還可以寫成這樣

['a', 'c', 'e', 'g']

>>> name[::-1]# 同樣地,步長還可以是負數,當步長為 -1 時,相當於複製乙個反轉的列表

['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']

>>> name[::-2]

['h', 'f', 'd', 'b']

容易出錯的地方:

>>> name[7:2:-2]# 相當於從索引為 7 到 索引為 2 中,每隔 2 各元素取乙個出來

['h', 'f', 'd']

>>> name[10:2:-2]# 對於超出索引的,預設是從最後乙個元素開始取

['h', 'f', 'd']

>>> name[100:2:-2]

['h', 'f', 'd']

三、列表深淺拷貝

淺》 a = name[:]

>>> id(a)

深》 b = name

>>> id(b)

>>> id(name)

原理透析

python 的變數就像乙個 標籤,或者說是乙個名字,它通過指標指向元素值,可以理解為下圖所示:

深拷貝指向原來的值,兩者 id一致,淺拷貝是從原來的值上覆制乙個副本出來。

四、面試題

1、列表 l = [1, 2, 3, 4, 5, 6, 7, 8, 9],那麼 print(l[10:3:-2]) 為多少?

>>> l = [1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> print(l[10:3:-2])

[9, 7, 5]

2、輸出值

b = a

b = 'banana'

print(a)

3、輸出值

b = a

b[0] = 'banana'

print(a)

= 是深拷貝,兩者 id 也相同,修改 b 會影響 a,修改 a 會影響 b,所以結果為: ['banana']

4、輸出值

b = a[:]

b[0] = 'banana'

print(a)

python 切片 關於Python切片問題!

在數學中,序列也被稱為數列,是指按照一定順序排序的一列數。在python中序列是最基本的資料結構。它是用於一塊用於存放多個值的連續記憶體空間。python內建了5個常用的序列結構。分別是列表 元組 字典 集合和字串。今天就來看一下這些序列結構的基本操作。序列的每乙個元素都有乙個編號,也被稱為索引,這...

python正向切片 python之切片

切片可以切字串str 列表list 元組tuple,以列表為例 1 使用索引獲取列表中某個元素 0 1 2 3 list a b c d 4 3 2 1 print list 0 list 4 list 0 list 4 的值均為 a list 0 為正向索引,list 4 為負向索引 2 列表中的...

python 切片步長 python 切片步長

python切片 切片 list變數 值下標 結束值下標 什麼意思呢?就是獲取 list中 下標從定義的位置開始獲取資料到 自定義的下標位置結束,但是切片有個規矩就是顧頭不顧尾,舉個例子 kl oppo vivo iphone levovo print kl 0 1 結果 oppo 如果我取list...