在前幾篇文章中我提過切片的用法,今天詳細來聊下python中的切片,名字看起來難以理解,別慌!我的理解切片就是擷取序列中元素的一種方式;所謂的序列就是有順序的列表,如:字串str、列表list、元組tuple都是序列:
eg:
list = [1,2,3]
print(list[0]) # 1
上邊**,獲取了list列表中第乙個元素,如果我們想獲取列表中後兩位元素怎麼辦呢?
切片就上場了:
list = [1,2,3]
print(list[1:3]) # [2,3]
print(type(list[1:3])) # 型別是list列表
上邊**,[ 1:3 ] 的意思是從索引1開始擷取,一直擷取到列表中的索引3( 1和3都是列表list中的索引 ),切片永遠符合左閉右開的原則,也就是左邊的能取到,右邊的取不到,所以要擷取到的索引為3,當然只要寫比2大的數都可以(與range函式裡邊兩個引數的情況相同,都是左閉右開)情況一:如果從某個索引開始一直擷取到最後,冒號後邊的索引可以去掉:
list = [1,2,3]
print(list[1:]) # [2,3]
情況二:如果從索引0開始擷取,0可以省略:
list = [1,2,3,4,5]
print(list[:2]) # [1,2]
情況三:如果從0開始,擷取到最後,前後索引都可以省略,等於複製了乙個list列表
list = [1,2,3,4,5]
print(list[:]) # [1,2,3,4,5]
python中也可以倒著擷取元素,
list = [1,2,3,4,5]
print(list[-1:]) # [5] 從倒數第一位開始,一直擷取到最後
print(list[-3:]) # [3,4,5] 從倒數第三個元素開始,擷取到最後
print(list[-3:-1]) # [3,4] 從倒數第三個元素開始,擷取到倒數第一位(不包含倒數第一位)
上邊**,倒著切片時注意,冒號前後的數不是索引了,也就是什麼數就從第幾位開始擷取,當然還是符合左閉右開的原則,冒號左邊的能取到,冒號後邊的取不到!!!
有步長的切片是指兩個冒號情況,最後冒號右邊代表步長
list = list(range(10)) #[0,1,2,3,4,5,6,7,8,9]
print(list[::2]) # [0,2,4,6,8]
上邊**,我們通過range函式生成0~9的整數,然後用list函式生成乙個list列表; 第乙個冒號前後沒有索引,表示從0一直擷取到最後,第二個冒號後邊的2代表每次擷取時的步長 。(與range函式三個引數情況相同)在來看個例子:
list = list(range(10))
print(list[1::2]) # [1,3,5,7,9]
上班**,從1開始擷取,一直擷取到最後,步長是2。
當然了,字串、元組也能使用切片來擷取裡邊的元素,在這裡就不一一舉例了,大家自己寫寫!
最後再來乙個demo:
實現乙個trim()函式,就是去除字串前後空格:
str = " hello "
newstr = str[1:len(str)-1]
if newstr == 'hello':
print("已去掉前後空格") # 已去掉前後空格
總結下:在python中,切片可以實現許多迴圈可以實現的操作,以後我會不斷的更新,有不足之處,希望指出!
可以使用切片來逆序字串 或者 列表 或元組:
l = [1,2,3,4]
s = 'abc'
t = (1,2,3)
print(l[::-1]) # [4, 3, 2, 1]
print(s[::-1]) # cba
print(t[::-1]) # (3, 2, 1)
[::] 會生成新列表,且新生成的列表與原列表記憶體位址並不相同
Python中的切片
1切片 切片就是取出集合中的一部分元素。當然集合不能是無序的,因為他是按照索引去取值的 例 range 函式可以建立乙個數列 取出 1.前10個數 2.3的倍數 3.不大於50的5的倍數。l range 1,101 print l 10 print l 2 3 print l 4 50 5 輸出結果...
python 中的切片
print str 0 3 擷取第一位到第三位的字元 print str 擷取字串的全部字元 print str 6 擷取第七個字元到結尾 print str 3 擷取從頭開始到倒數第三個字元之前 print str 2 擷取第三個字元 print str 1 擷取倒數第乙個字元 print str...
Python中的切片
取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 取前3個元素,應該怎麼做?l liming tom jack jim 一般方法 print l 0 l 1 l 2 liming tom jack該方法缺點 如果擴充套件一下,取前n個元素就比較麻煩。如果提取前n個元素,也...