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] |