發表文章

目前顯示的是 10月, 2017的文章

Python 研究slice的用法

假設我們有一個長度為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如果有沒值的話就是代表該陣列的 起始點 與 結束點 。 用四個小範例來展示一下更加清楚。 a = [10, 20, 30, 40, 50, 60, 70, 80] print "#1", a #1: 單純先把陣列印出來看看 print "#2", a[:] #2: 不給i, j值,就是分別為0跟8的意思。所以一樣是印出陣列的全部值 print "#3", a[1:3] #3: 印出編號[1, 3)的兩個元素 print "#4", a[5:len(a)] #4: 印出第5個到第7個元素(len(a)為8) ---result--- #1 [10, 20, 30, 40, 50, 60, 70, 80] #2 [10, 20, 30, 40, 50, 60, 70, 80] #3 [20, 30] #4 [60, 70, 80] 其他i, j也可以為負的,在此先不討論,不過原理大致相同。 用slice插入元素 有時候我想要在陣列的前後插入,該怎麼辦呢?一般通常會使用insert這功能,但也可以透過slice來完成。 例如 a[len(a):] = [90, 100, 110] print "#5", a #5: 我想要在a陣列後方插入90, 100, 110這三個值,所以我在冒號的左邊,也就是起始位置i設為len(a),也就是8。代表