Python学习七:切片

Java中获取一个子序列时可以用Java内置的API来完成操作。 
String	substring(int beginIndex) 
          返回一个新的字符串,它是此字符串的一个子字符串。
String	substring(int beginIndex, int endIndex) 
          返回一个新字符串,它是此字符串的一个子字符串。
在Python中,如果想获取一个序列的子序列时该怎么做呢?Python提供了——“切片”这种强大的技术,可以说是:屠龙刀!
先看一个例子:有一个list,L = ['Java', 'C', 'C++', 'Swift', 'C#'].想取其前3个元素,该怎么做呢?
两种办法:
第一种,本办法,一次取出前3个元素。
>>> L = ['Java', 'C', 'C++', 'Swift', 'C#']
>>> [L[0],L[1],L[2]]
['Java', 'C', 'C++']
第二种,用循环,循环便利这个List取出前3个元素。
In [1]: L = ['Java', 'C', 'C++', 'Swift', 'C#']
In [2]: r = []
In [3]: n = 3
In [4]: for i in range(n):
   ...:     r.append(L[i])
   ...:     
In [5]: r
Out[5]: ['Java', 'C', 'C++']
上述两种方式完全可以顺利的取出前3个元素。但是,如果这个List有1万个数值,想要取出前9999个数值的话,这两种方法显得有点费劲了。
那么再看看Python中,提供的强大的获取方式:切片(Slice)操作符
In [6]: L[0:3]
Out[6]: ['Java', 'C', 'C++']
L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。
如果第一个索引是0,还可以省略:
In [7]: L[:3]
Out[7]: ['Java', 'C', 'C++']
也可以从索引1开始,取出2个元素出来:
In [8]: L[1:3]
Out[8]: ['C', 'C++']
类似的,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试,倒数第一个元素的索引是:-1.
In [10]: L[-1]
Out[10]: 'C#'

In [9]: L[-2:]
Out[9]: ['Swift', 'C#']

In [11]: L[-2:-1]
Out[11]: ['Swift']

来实战应用一下切片:
情景:
1、生成一个0~99的数列。
2、取出前10个数。
3、取出后10个数。
4、取出前11~20个数。
5、在前10个数中,每两个取一个。
6、所有数,每5个取一个。
7、原样复制一个list。

tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
In [12]: (0 , 1 , 2 , 3, 4 ,5 , 6)[:3]
Out[12]: (0, 1, 2)

字符串'xxx'或Unicode字符串u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
In [13]: 'ABCDEFG'[:3]
Out[13]: 'ABC'
In [14]: 'ABCDEFGHI'[::2]
Out[14]: 'ACEGI'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值