title: how to use slice in python
tags: python
假設我們有一個長度為8的陣列a,其編號與對應到得值分別如下表。a = [10, 20, 30, 40, 50, 60, 70, 80]
| 編號 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 值 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 |
以往我們存取陣列的數值常常都是透過編號的方式,例如a[1]的值就是20。在python內可以使用一種更強大且方便的工具來操作陣列。
存取陣列內元素
slice的用法就是在中括號[]內加入冒號:,形式長這樣a[i:j]這是什麼意思呢?i為我要存取之陣列起始編號,j為陣列之結束編號。就是我要存取a陣列當中的從編號i到編號j的元素。注意,它是包含i,不包含j的。用數學的表示方式大概就是[i, j)。i, j如果有沒值的話就是代表該陣列的起始點與結束點。
用四個小範例來展示一下更加清楚。
#1: 單純先把陣列印出來看看#2: 不給i,j值,就是分別為0跟8的意思。所以一樣是印出陣列的全部值#3: 印出編號[1, 3)的兩個元素#4: 印出第5個到第7個元素(len(a)為8)
1 | a = [10, 20, 30, 40, 50, 60, 70, 80] |
其他i, j也可以為負的,在此先不討論,不過原理大致相同。
用slice插入元素
有時候我想要在陣列的前後插入,該怎麼辦呢?一般通常會使用insert這功能,但也可以透過slice來完成。
再舉三個例子
#5: 我想要在a陣列後方插入90, 100, 110這三個值,所以我在冒號的左邊,也就是起始位置i設為len(a),也就是8。代表我要從第8個位置放入90, 100, 110#6: 如果要在陣列前面插入值的話,那就指定j值為0,表示我要插入的值會放在第0個位置之前。#7: 我想要在10跟20中間放些值進去,此時10與20對應到的編號分別已經變為3,4了,所以就是就在[3:4]中插入值。注意,3的位置的值會被取代,所以要把數值10也放入其中。
1 | a[len(a):] = [90, 100, 110] |