分享

Python笔记:列表和元组(二)-2018.9.21

 静幻堂 2018-09-23
Python小白菜 2018-09-21 19:18:29
Python笔记:列表和元组(二)-2018.9.21

来继续序列的内容,索引用来操作序列内的单个元素(Python笔记:列表和元组(一)-2018.9.20),而切片则是用来对一定范围内的元素,用两个索引和冒号进行分隔。

  • 切片
>>> tag = '<a href="http://www.">Python web site</a>'
>>> tag[9:30]
'http://www.'
>>> tag[32:-4]
'Python web site'

第一个索引是切片选取范围内的第一个元素,包含在切片内,第二个索引是切片后剩下的第一个元素的索引,不包含在切片内。

>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> numbers[3:6]
[4, 5, 6]
>>> numbers[0:1]
[1]

1、简写

>>> numbers[7:10]
[8, 9, 10]
>>> numbers[10]
Traceback (most recent call last):
numbers[10]
IndexError: list index out of range

索引[10]是第11个元素,但在列表numbers中是不存在的,仍然可以打印出我们想要的效果,这里要注意的是,如果单独使用索引[10]时,会报一个IndexError错误,因为索引超出了列表索引范围,所以只要记住最后一个索引是[-1]就好了。

>>> numbers[7:-1]
[8, 9]
>>> numbers[7:0]
[ ]

在切片的第二个索引使用[-1],也无法包含最后一个元素

如果第一个索引位于第二个索引的后面,结果会打印一个空序列,所以想要切片结束在序列的最后位置可以省略第二个索引

>>> numbers[7:]
[8, 9, 10]

切片从序列的起始位置开始,也可以省略第一个索引

>>> numbers[:3]
[1, 2, 3]

如果要打印整个序列,两个索引都省略,只保留冒号:

>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2、步长

在普通切片中默认的步长为1,默认时通常省略了步长参数,完整的写法是这样的:

>>> numbers[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

所以可以指定步长,比如步长为2,则在切片的开始和结束每隔一个元素提取一个元素。

>>> numbers[0:10:2]
[1, 3, 5, 7, 9]

步长不能为0,可以是负数,就是从右向左提取元素

这里要注意的是,当步长是负数时,两个索引的位置也要换一下,第一个索引的位置要在第二个索引的右边,与步长为正数是相反,否则提取结果为空。

>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
>>> numbers[10:0:3]
[]
>>> numbers[10:0:-3]
[10, 7, 4]
>>> numbers[::-3]
[10, 7, 4, 1]
>>> numbers[5::-2]
[6, 4, 2]
>>> numbers[:5:-2]
[10, 8]

步长为正,从起点移到终点;步长为负,从终点移到起点。

  • 切片实例

从输入的URL中提取域名

url = input('Please enter the URL:')
domain = url[11:-4]
print('Domain name:',domain)
#以下输出效果
Please enter the URL:http://www.
Domain name: python

切片的笔记结束,关于相加、乘法,后面记录

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多