切片

切片

1对list进行切片

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

>>> L= ['Adam', 'Lisa', 'Bart', 'Paul']

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

笨办法:

>>>[L[0], L[1], L[2]]

['Adam','Lisa', 'Bart']

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

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

>>> r= []

>>> n= 3

>>>for i in range(n):

...     r.append(L[i])

...

>>> r

['Adam','Lisa', 'Bart']

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

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

>>>L[0:3]

['Adam', 'Lisa','Bart']

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

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

>>>L[:3]

['Adam','Lisa', 'Bart']

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

>>>L[1:3]

['Adam','Lisa']

只用一个 : ,表示从头到尾:

>>>L[:]

['Adam','Lisa', 'Bart', 'Paul']

因此,L[:]实际上复制出了一个新list

切片操作还可以指定第三个参数:

>>>L[::2]

['Adam','Bart']

第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。

list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple

 

2倒叙切片

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

>>> L= ['Adam', 'Lisa', 'Bart', 'Paul']

 

>>>L[-2:]

['Bart','Paul']

 

>>>L[:-2]

['Adam','Lisa']

 

>>>L[-3:-1]

['Lisa','Bart']

 

>>>L[-4:-1:2]

['Adam','Bart']

记住倒数第一个元素的索引是-1倒序切片包含起始索引,不包含结束索引。

 

3对字符串切片

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

>>>'ABCDEFG'[:3]

'ABC'

>>>'ABCDEFG'[-3:]

'EFG'

>>>'ABCDEFG'[::2]

'ACEG'

在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/walxiaosage/article/details/49904105
个人分类: Python入门学习
上一篇函数
下一篇迭代
想对作者说点什么? 我来说一句

3d打印机切片软件

2018年04月18日 26.57MB 下载

效果图切片自动生成

2012年03月11日 6.3MB 下载

Surfer画三维切片

2009年11月30日 518KB 下载

切片的使用

2015年04月10日 15KB 下载

arcgis10.3发布切片地图操作步骤

2017年12月26日 1.11MB 下载

9格切片位图脚本

2013年03月27日 2KB 下载

SpringAop面向切片

2011年10月30日 7.96MB 下载

arcgis制作切片

2018年05月16日 679KB 下载

Fireworks切片简单教程

2011年11月21日 383KB 下载

arcgis_切片的制作

2013年07月25日 637KB 下载

没有更多推荐了,返回首页

关闭
关闭