取一个list或tuple的部分元素是非常常见的操作。对于这种经常指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
>>> L = list(range(20)) >>> L [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] # 取前10个数 >>> L[:10] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 取后10个数,记住倒数第一个元素的索引是-1 >>> L[-10:] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] # 取前10-15个数 >>> L[10:15] [10, 11, 12, 13, 14] # 前10个数,每两个取一个 >>> L[:10:2] [0, 2, 4, 6, 8] # 所有数,每5个取一个 >>> L[::5] [0, 5, 10, 15] # 什么都不写,只写[:]就可以原样复制一个list >>> L[:] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] >>> # tuple也可以用切片操作,只是操作的结果仍是tuple >>> (0, 1, 2, 3, 4, 5)[:3] (0, 1, 2) >>> >>> # 字符串也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作 # 在很多编程语言中,针对字符串提供了很多各种截取函数(例如substring),其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成 >>> 'ABCDEFG'[:3] 'ABC' >>> 'ABCDEFG'[::2] 'ACEG'