天天看点

Python 2.5.1 切片

取一个list或者tuple的部分元素是一个非常常见的操作,比如一个list如下:

L =['Michael','Sarah','Tracy','Bob','Jack']

使用切片(slice)来取前3个元素就是:

>>>L(0:3)

['Michael','Sarah','Tracy']

L[0:3]表示,从索引0开始,直接索引到3为止,但是不包括3.即索引0,1,2。

如果索引0开始,还可以省略:

>>>L[:3]

也可以从1开始取,取出两个元素:

>>>L[1:3]

['Sarah','Tracy']

类似的,Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片。试试:

>>>L[-2:]

['Bob','Jack']

记住倒数第一个元素的索引是-1.

切片操作十分有用,我们先建一个0-99的数列:

>>>L =list(range(100))

>>>L

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

可以通过切片非常轻松取出某一段序列。比如前10个:

>>>L[:10]

[0,1,2,3,4,5,...9]

前10个数每两个取一个:

>>>L[:10:2]

[0,2,4,...8]

所有的数每5个取一个。

>>>L[::5]

[0,5,10,15,...95]

甚至什么都不写

>>>L[:]

[1,2,3,..99]

tuple也是list一种,唯一的区别是tuple不可变。因此tuple也可以使用切片。只是操作结果仍是tuple。

>>>(0,1,2,3,4,5)[:3]

(0,1,2)

字符串'xxx'也可以看作一种list,每个元素就是一个字符。因此,字符串也可以使用切片技术。只是操作结果也是一个字符串:

>>>'ABCDEF'[:3]

'ABC'

在很多 编程语言中,针对字符串提供了各种截取函数,(例如substring),其实目的就是对字符串切片。Python中没有针对字符串的截取函数,只需要一个切片就可以了。非常简单。

小结:

有了切片的操作,很多循环就不需要了。Python的切片非常灵活,一行代码就可以实现很多循环才能实现的功能。