取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下:
取前3個元素,應該怎麼做?
一般方法:l=
['liming','tom','jack','jim'
]
該方法缺點:如果擴充套件一下,取前n個元素就比較麻煩。print(l[0],l[1],l[2]
)>>
>liming tom jack
如果提取前n個元素,也就是索引為0-(n-1)的元素,可以用迴圈:
對這種經常取指定索引範圍的操作,用迴圈十分繁瑣,因此,python提供了切片(slice)操作符,能大大簡化這種操作。r=
n=3for i in range(n):
# 該函式的引數可以是任何型別的物件
)print(r)
>>
>
['liming', 'tom', 'jack'
]
對應上面的問題,取前3個元素,用一行**就可以完成切片:
l=
['liming','tom','jack','jim'
]print(l[0:3]
)>>
>
['liming', 'tom', 'jack'
]
print(l[:3]
)>>
>
['liming', 'tom', 'jack'
]
切片操作十分有用。我們先建立乙個0-99的數列:print(l[-2:]
)>>
>
['jack', 'jim'
]print(l[-2:-1]
)>>
>
['jack'
]記住倒數第乙個元素的索引是-1
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]
tuple也是一種list,唯一區別是tuple不可變。因此,tuple也可以用切片操作,只是操作的結果仍是tuple:print(l[:]
)>>
>
[0, 1, 2, 3, ..., 99]
字串』***』也可以看成是一種list,每個元素就是乙個字元。因此,字串也可以用切片操作,只是操作結果仍是字串.print((1,2,3,4,5,6)
[:3]
)>>
>
(1, 2, 3)
有了切片操作,很多地方迴圈就不再需要了。python的切片非常靈活,一行**就可以實現很多行迴圈才能完成的操作。print(
'abcdefg'
[:3]
)#abc
print(
'abcdefg'
[::2]
)#aceg
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列表...