(windows) Python 2.7 学习笔记 十六 高级特性 – 切片

切片

取一个 listtuple 的部分元素,下面有一个 list

取前 3 个元素:

之前的办法:

这种方法扩展一下,取前 N 个元素就没办法了。

取前 N 个元素,也就是索引为 0 – (N – 1) 的元素,可以用循环:

对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python 提供了切片 (Slice)操作符,能大大简化这种操作。

对应上面的问题,取前 3 个元素,用一行代码就可以完成切片:

L[0 : 3] 表示,从索引 0 开始取,直到索引 3 为止,但不包括索引 3。即索引 0,1,2,正好是 3 个元素。

如果第一个索引是 0,还可以省略:

也可以从索引 1 开始,取出 2 个元素出来:(索引 1,索引 2 的元素)

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

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

切片操作十分有用。创建一个 0 – 99 的数列:

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

10 个数:

11 – 20 个数:

10 个数,每两个取一个:

所有数,每 5 个取一个:

甚至什么都不写,只写 [ : ] 就可以原样复制一个 list

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

字符串 ‘xxx’Unicode 字符串 u’xxx’ 也可以看成是一种 list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python 没有针对字符串的截取函数,只需要切片一个操作就可以完成。


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

发表评论

zh_CNChinese
zh_CNChinese