Python中的切片
前言
一直想把Python切片的知识总结,但拖延至今方才摁键。起因是室友接受了导师给的课题,机器学习相关,之前他一直实习Java,现在要学Python了。有一天他发信息问我关于切片的问题,我竟不能十分肯定的回答。惭愧!但不得不说,Python切片中的Tips是我之前不曾见过,也自然不曾使用的,今日就着外面世界的烟火炮竹,把眼界大开。
切片
切片的完整格式:[start:end:step]
,通常我们只用到start,end。
这里引用Bobby老师的一段话,对切片格式简单介绍:
其中,第一个数字start表示切片开始位置,默认0;
第二个数字end表示切片截止(但不包含)位置(默认为列表长度);
第三个数字step表示切片的步长(默认为1)。
当start为0时可以省略,当end为列表长度时可以省略,
当step为1时可以省略,并且省略步长时可以同时省略最后一个冒号。
另外,当step为负整数时,表示反向切片,这时start应该比end的值大才行。
如果存在一个列表lyst = [1, 2, 3, 4]
,那么lyst[2:4]
的值为**[3, 4]**。对Python来说,切片并非列表专利,元组也可以做切片操作:
In [0]: tuple_ = (1, 2, 3, 4)
In [1]: tuple_[2:4]
Out[1]: (3, 4)
可看到一个现象,列表的切片类型是列表,元组的切片类型还是元组。
关于切片的一些常见使用如下:
In [0]: lyst = [1, 2, 3, 4]
In [1]: lyst[::]
Out[1]: [1, 2, 3, 4]
In [2]: lyst[::-1] # 反向序列
Out[2]: [4, 3, 2, 1]
In [3]: lyst[::2] # 等同“lyst[0::2]”。从索引0开始,每间隔一个元素取一个值。
Out[3]: [1, 3]
In [4]: lyst[1::2] # 从索引1开始,每间隔一个元素取一个值。
Out[4]: [2, 4]
In [5]: lyst[1