切片
Python切片是一个非常快速的操作,它是快速访问部分数据的一种简便方法。
从列表(或支持它的任何其他序列,如字符串)中获取最后九个元素的切片表示法如下所示:num_list[-9:]
当我看到这一点时,我把括号里的部分读作“从头到尾第9个。”(实际上,我在心理上把它缩写为“-9,on”)
说明:
完整的符号是sequence[start:stop:step]
但是冒号告诉Python你给它一个切片而不是一个常规索引。这就是为什么在Python 2中复制列表的惯用方法是list_copy = sequence[:]
清除它们的方法是:del my_list[:]
(列表在Python 3中得到list.copy和list.clear。)
给你的切片起个描述性的名字!
您可能会发现分离切片的形成与将其传递给list.__getitem__方法(that's what the square brackets do)很有用。即使你不是新手,它也会让你的代码更具可读性,这样其他可能需要阅读你的代码的人就能更容易地理解你在做什么。
但是,不能将一些由冒号分隔的整数赋给变量。您需要使用slice对象:last_nine_slice = slice(-9, None)
然后可以将切片对象传递给序列:>>> list(range(100))[last_nine_slice]
[91, 92, 93, 94, 95, 96, 97, 98, 99]
islice
来自itertools模块的islice是另一种可能的实现方法。islice不接受负参数,因此理想情况下,iterable有一个__reversed__特殊方法,list有这个方法,因此必须首先将list(或iterable with __reversed__)传递给reversed。>>> from itertools import islice
>>> islice(reversed(range(100)), 0, 9)
islice允许延迟计算数据管道,因此要具体化数据,请将其传递给构造函数(如list):>>> list(islice(reversed(range(100)), 0, 9))
[99, 98, 97, 96, 95, 94, 93, 92, 91]