Slicing
字串,其實也是一種list,只是他是"immutable",不能做修改。但也因為他是list,所以支援了slicing。
What is Slicing
在index裡使用(:)來選取範圍的行為就是slicing。
a = [1,2,3,4]
a[1:3]
# [2,3]
Slicing的左邊數值(此範例中為1)代表起使index,右邊數值(此範例中為3)代表終止index,終止index是不會被走到的。如果沒有指定左值或右值,左值會默認是0,而右值會默認是list長度。在此要注意一點,python的index是支援負數的。所以如你不想取最後一個數字,可以寫成像a[:-1]
。
index 0 1 2 3 4 5 6 7 8 9
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
nindex -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
Advance Slicing
其實啊,slicing根本就是range啊,真正的slicing的形狀是這樣的a[1:3:1]
,最左邊的值就是我們上面說的左值,而中間的值則是上面的右值,最右邊的值則是step,也就是每步的大小,如果沒有指定,會根據你的左值跟中值,決定是1還是-1。
a = [1,2,3,4,5,6,7,8,9]
a[::2]
# [1,3,5,7,9]