一、基本概念
一般來說,Python 數組(也稱為“列表”)切片指的是對數組的某一部分進行截取,生成新數組的過程。數組中每個元素都有一個對應的索引(Index),索引從0開始。通過切片操作,我們可以指定一個範圍,提取出數組中的一段連續區間。Python支持切片和索引等操作,使得對數組的處理更加靈活和高效。
切片有兩個 colon(冒號)表示,用兩個數字表示的切片表示從第一個數字代表的索引指向的元素開始到第二個數字代表的索引指向的元素結束,但是不包括該元素。例如,arr[2:5] 表示從 arr 數組的索引為2的位置開始截取,直到索引為5的位置結束(但是不包括索引為5的位置的元素),截取後的數組是 arr[2]、arr[3]、arr[4] 這三個元素組成的新數組。
arr = [1, 2, 3, 4, 5]
new_arr = arr[2:5]
print(new_arr) # [3, 4, 5]
二、切片的應用場景
切片操作在編寫程序時經常用到,可以快速獲得數組的子串、子列表或子數組。它還可以用來在處理大數據集的時候使得代碼更具可讀性和可維護性。
1. 提取數組的子串
提取數組的子串是切片的一種常見應用場景。例如,可以通過如下代碼提取一個數組的前3個元素。
arr = [1, 2, 3, 4, 5]
new_arr = arr[:3]
print(new_arr) # [1, 2, 3]
通過在冒號左邊不指定索引值,表示提取數組的第0個元素。
2. 單步切片
單步切片用於提取數組中每個隔一個元素的元素。例如,如下代碼可以提取一個數組中隔一個元素的元素。
arr = [1, 2, 3, 4, 5]
new_arr = arr[::2]
print(new_arr) # [1, 3, 5]
通過在冒號左邊、冒號右邊和中間都不指定數字,表示提取數組的第0個元素開始,以步長為1提取整個數組中每個隔一個元素的元素。
3. 逆序切片
逆序切片指的是將整個數組逆序輸出。例如,如下代碼可以將一個數組逆序輸出。
arr = [1, 2, 3, 4, 5]
new_arr = arr[::-1]
print(new_arr) # [5, 4, 3, 2, 1]
通過在冒號左邊不指定索引值,表示提取數組的第0個元素。通過在冒號右邊不指定索引值,表示提取整個數組。通過在中間指定步長為-1,表示每次取一個元素,並且是從後往前取。
4. 截取除最後一位外的所有元素
切片還可以用於提取除最後一位數組元素外的其餘元素,可以通過如下代碼實現。
arr = [1, 2, 3, 4, 5]
new_arr = arr[:-1]
print(new_arr) # [1, 2, 3, 4]
通過在冒號右邊不指定索引值,表示提取整個數組。通過在冒號左邊指定索引值為0,表示從數組的第0個元素開始,直到倒數第二個元素結束。
三、高級操作
除了基本的切片操作,Python 數組還提供一些高級的切片技巧。
1. 切片賦值
可以通過切片操作將一個數組的一段區間賦值給另一個數組。例如,如下代碼將一個數組的前3個元素賦值給另一個數組。
arr1 = [1, 2, 3]
arr2 = [4, 5, 6]
arr2[:3] = arr1
print(arr2) # [1, 2, 3, 6]
通過在 arr2 的前三個元素位置使用 arr1 的前三個元素進行賦值,最終得到的數組 arr2 中的前三個元素變成了[1, 2, 3],而原本的arr2[3]則變成了 arr2[2]的值為6。
2. 切片刪除元素
還可以使用切片操作刪除數組的一段區間的元素。例如,如下代碼將一個數組的前3個元素刪除。
arr = [1, 2, 3, 4, 5]
arr[:3] = []
print(arr) # [4, 5]
通過在 arr 的前三個元素位置賦一個空數組,可以將 arr 的前三個元素刪除,最終得到[4, 5]。
3. 切片中使用布爾表達式
切片中我們還可以使用布爾表達式來篩選數組元素。例如,如下代碼將一個數組中大於2的元素提取出來。
arr = [1, 2, 3, 4, 5]
new_arr = [i for i in arr if i > 2]
print(new_arr) # [3, 4, 5]
通過列表推導式的方式,篩選出arr數組中所有大於2的元素,生成新數組[new_arr]後輸出。
四、總結
在 Python 數組中,數組的切片操作可以說是一個非常常用且強大的工具,可以實現對數組的任意子串切取,並且方便高效。通過本文對 Python 數組切片操作的技巧進行了介紹,希望大家能夠更加熟練地操作和使用切片。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/244846.html