python學習之路(11)
阿新 • • 發佈:2019-05-14
復制 slice 切片 sds [1] adas 代碼 bsp clas
切片
取一個list或tuple的部分元素是非常常見的操作。比如,一個list如下:
>>> list=[‘zh‘,‘cn‘,‘sqlmap‘,‘nmap‘,‘znamp‘]
取前3個元素,應該怎麽做?
笨辦法:
>>> list=[‘zh‘,‘cn‘,‘sqlmap‘,‘nmap‘,‘znamp‘] >>> list1=[list[0],list[1],list[2]] >>> list1 [‘zh‘, ‘cn‘, ‘sqlmap‘]
之所以是笨辦法是因為擴展一下,取前N個元素就沒轍了。
取前N個元素,也就是索引為0-(N-1)的元素,可以用循環:
>>> r=[] >>> n=3 >>> for i in range(n): r.append(list[i]) >>> r [‘zh‘, ‘cn‘, ‘sqlmap‘]
對這種經常取指定索引範圍的操作,用循環十分繁瑣,因此,Python提供了切片(Slice)操作符,能大大簡化這種操作。
對應上面的問題,取前3個元素,用一行代碼就可以完成切片:
>>> list[0:3] [‘zh‘, ‘cn‘, ‘sqlmap‘]
L[0:3]
表示,從索引0開始取,直到索引3為止,但不包括索引3。即索引0,1,2,正好是3個元素。
如果第一個索引是0,還可以省略:
>>> list[:3] [‘zh‘, ‘cn‘, ‘sqlmap‘]
也可以從索引1開始,取出2個元素出來:
>>> list[2:4] [‘sqlmap‘, ‘nmap‘]
類似的,既然Python支持L[-1]
取倒數第一個元素,那麽它同樣支持倒數切片,試試:
>>> list[-1] ‘znamp‘ >>> list[-2:] [‘nmap‘, ‘znamp‘] >>> list[-3:-2] [‘sqlmap‘]
記住倒數第一個元素的索引是-1
。
切片操作十分有用。我們先創建一個0-99的數列:
>>> list=range(100) >>> list range(0, 100)
可以通過切片輕松取出某一段數列。比如前5個數:
>>> list[:5]
range(0, 5)
後10個數:
>>> list1=list[-10:] >>> list1 range(90, 100)
前11-20個數:
>>> list[10:20]
range(10, 20)
前10個數,每兩個取一個:
>>> list[:10:2]
range(0, 10, 2)
所有數,每5個取一個:
>>> list[::5]
range(0, 100, 5)
甚至什麽都不寫,只寫[:]
就可以原樣復制一個list:
list[:]
range(0,100)
tuple也是一種list,唯一區別是tuple不可變。因此,tuple也可以用切片操作,只是操作的結果仍是tuple:
>>> tuple=(1,2,3,4,5,6,7,8,9) >>> tuple[:3] (1, 2, 3)
字符串‘xxx‘
或Unicode字符串u‘xxx‘
也可以看成是一種list,每個元素就是一個字符。因此,字符串也可以用切片操作,只是操作結果仍是字符串:
>>> a=‘asdasdasdsadasdeqff‘ >>> a[-3:] ‘qff‘
python學習之路(11)