Python中的切片

2021-10-07 01:43:10 字數 2127 閱讀 4252

取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下:

取前3個元素,應該怎麼做?

l=

['liming','tom','jack','jim'

]

一般方法:

print(l[0],l[1],l[2]

)>>

>liming tom jack

該方法缺點:如果擴充套件一下,取前n個元素就比較麻煩。

如果提取前n個元素,也就是索引為0-(n-1)的元素,可以用迴圈:

r=

n=3for i in range(n):

# 該函式的引數可以是任何型別的物件

)print(r)

>>

>

['liming', 'tom', 'jack'

]

對這種經常取指定索引範圍的操作,用迴圈十分繁瑣,因此,python提供了切片(slice)操作符,能大大簡化這種操作。

對應上面的問題,取前3個元素,用一行**就可以完成切片:

l=

['liming','tom','jack','jim'

]print(l[0:3]

)>>

>

['liming', 'tom', 'jack'

]

print(l[:3]

)>>

>

['liming', 'tom', 'jack'

]

print(l[-2:]

)>>

>

['jack', 'jim'

]print(l[-2:-1]

)>>

>

['jack'

]記住倒數第乙個元素的索引是-1

切片操作十分有用。我們先建立乙個0-99的數列:

l=list(range(100))

print(l)

>>

>

[0,1,2,...,98,99]

print(l[:10]

)>>

>

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l[-10:]

)>>

>

[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

print(l[11:20]

)>>

>

[11, 12, 13, 14, 15, 16, 17, 18, 19]

print(l[:10:2]

)>>

>

[0, 2, 4, 6, 8]

print(l[::5]

)>>

>

[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

print(l[:]

)>>

>

[0, 1, 2, 3, ..., 99]

tuple也是一種list,唯一區別是tuple不可變。因此,tuple也可以用切片操作,只是操作的結果仍是tuple:

print((1,2,3,4,5,6)

[:3]

)>>

>

(1, 2, 3)

字串』***』也可以看成是一種list,每個元素就是乙個字元。因此,字串也可以用切片操作,只是操作結果仍是字串.

print(

'abcdefg'

[:3]

)#abc

print(

'abcdefg'

[::2]

)#aceg

有了切片操作,很多地方迴圈就不再需要了。python的切片非常靈活,一行**就可以實現很多行迴圈才能完成的操作。

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中的切片

在前幾篇文章中我提過切片的用法,今天詳細來聊下python中的切片,名字看起來難以理解,別慌!我的理解切片就是擷取序列中元素的一種方式 所謂的序列就是有順序的列表,如 字串str 列表list 元組tuple都是序列 eg list 1,2,3 print list 0 1 上邊 獲取了list列表...