回覆列表
-
1 # 音悅心靈魂
-
2 # lieshide
Python的序列中(列表和元組都是序列),都可以可以使用切片操作: sequence[start : end : step] 前面兩個好理解,分別為開始索引的位置和結束索引的位置(Python中提供兩種索引:從左向右 0 ….. index-1 從右向左 -1 …. -index),關鍵是在這個step的含義。
下面給大家介紹一個step(步長)的含義:
>>>s = ‘abcdefgh’
>>>s[::-1]
’hgfedcba’
>>>s[::2]
’aceg’
>>>s = "abcdefgh"
>>>s[::-1]
"hgfedcba"
>>>s[::2]
"aceg"
其實呢,step在這裡表示的是切片的步長(step不能為0,預設為1):
若 step > 0, 則表示從左向右進行切片。此時,start必須小於end才有結果,否則為空。例如: s[0,: 5: 2]的結果是’ace’
若 step < 0, 則表示從右向左進行切片。 此時,start必須大於end才有結果,否則為空。列如: s[5: 0: -1]的結果是’fedcb’
那麼,s[::-1]表示從右往左,以步長為1進行切片; s[::2] 表示從左往右以步長為2進行切片
比如range(1, 10, 2)
生成器列表是[1, 3, 5, 7, 9]
第三個引數就是步長,預設為1,可以看做是跳過(步長-1)個輸出一次。如果是負數,則是反向減去,比如range(10, 1, -2),輸出[10, 8, 6, 4, 2]