首页 > 编程语言 > 详细

python学习之路(11)

时间:2019-05-14 19:50:13      阅读:123      评论:0      收藏:0      [点我收藏+]

切片


取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下:

>>> list=[zh,cn,sqlmap,nmap,znamp]

取前3个元素,应该怎么做?

笨办法:

>>> list=[zh,cn,sqlmap,nmap,znamp]
>>> list1=[list[0],list[1],list[2]]
>>> list1
[zh, cn, sqlmap]

之所以是笨办法是因为扩展一下,取前N个元素就没辙了。

取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:

>>> r=[]
>>> n=3
>>> for i in range(n):
    r.append(list[i])

    
>>> r
[zh, cn, sqlmap]

对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。

对应上面的问题,取前3个元素,用一行代码就可以完成切片:

>>> list[0:3]
[zh, cn, sqlmap]

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。

如果第一个索引是0,还可以省略:

>>> list[:3]
[zh, cn, sqlmap]

也可以从索引1开始,取出2个元素出来:

>>> list[2:4]
[sqlmap, nmap]

类似的,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:

>>> list[-1]
znamp
>>> list[-2:]
[nmap, znamp]
>>> list[-3:-2]
[sqlmap]

记住倒数第一个元素的索引是-1

切片操作十分有用。我们先创建一个0-99的数列:

>>> list=range(100)
>>> list
range(0, 100)

可以通过切片轻松取出某一段数列。比如前5个数:

>>> list[:5]
range(0, 5)

后10个数:

>>> list1=list[-10:]
>>> list1
range(90, 100)

前11-20个数:

>>> list[10:20]
range(10, 20)

前10个数,每两个取一个:

>>> list[:10:2]
range(0, 10, 2)

所有数,每5个取一个:

>>> list[::5]
range(0, 100, 5)

甚至什么都不写,只写[:]就可以原样复制一个list:

list[:]
range(0,100)

tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:

>>> tuple=(1,2,3,4,5,6,7,8,9)
>>> tuple[:3]
(1, 2, 3)

字符串‘xxx‘或Unicode字符串u‘xxx‘也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

>>> a=asdasdasdsadasdeqff
>>> a[-3:]
qff

 

python学习之路(11)

原文:https://www.cnblogs.com/-zhong/p/10864005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!