Python切片

取一个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'

相关推荐