Python的宗旨,一行代码能实现的功能,绝对不写5行代码,始终记住,代码越少,开发效率越高.
取一个list或者tuple的部分元素是很常见的操作:
>>>L=['Beijing','Shanghai','Wuhan','Changsha','Tianjing'];
如果要取前面的三个元素,该怎么做?
>>>temp=[]
>>>n=3
>>>for i in range(n):
... r.append(L[i])
...
>>>r
['Beijing','Shanghai','Wuhan']
但是对于这种经常指定索引范围的操作,用循环过于繁琐,Python中提供了切片,一行代码可以搞定:
>>>L[0:3]
['Beijing','Shanghai','Wuhan']
L[0:3] 表示,从索引 0 开始取,直到索引 3 为止,但不包括索引 3 。即索
引 0 , 1 , 2 ,正好是 3 个元素。如果第一个索引是 0 ,还可以省略:
类似的,既然 Python 支持 L[-1] 取倒数第一个元素,那么它同样支持倒
数切片,试试:
>>> L[-2:]
['Changsha', 'Tianjing']
>>> L[-2:-1]
['Changsha']
倒数第一个元素的索引是一.
创建一个0-99的数列:
tuple 也是一种 list,唯一区别是 tuple 不可变。因此,tuple 也可以用切
片操作,只是操作的结果仍是 tuple:
>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)
字符串 'xxx' 也可以看成是一种 list,每个元素就是一个字符。因此,字
符串也可以用切片操作,只是操作结果仍是字符串:
>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'
有了切片操作,很多地方循环就不再需要了,Python的切片非常灵活,一行代码就可以实现很多行循环才能完成的操作,