文档章节

Python 列表切片

o
 osc_g8254g7s
发布于 2019/08/19 22:35
字数 587
阅读 5
收藏 0

精选30+云产品,助力企业轻松上云!>>>

想必很多人都使用过列表的切片,通过切片可以从列表中获取一个或多个元素,但你真的了解切片?

一、一般玩法

>>> name = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> name[0:2]		# 获取 0 - 2 中间的元素,不包括索引为 2 的元素
['a', 'b']

>>> name[:2]		# 从 0 开始切,可省略 0
['a', 'b']

>>> name[1:]		# 同样地,切到最后一个也可以省略最后的元素索引
['b', 'c', 'd', 'e', 'f', 'g', 'h']

二、列表步长

列表切片实际上还可以接收第三个参数:步长(默认情况为 1),来试试将其改为 2 会有说明变化?

>>> name[1:6:2]		# 每隔 2 个元素才取出一个来
['b', 'd', 'f']

>>> name[::2]		# 如果是从头到尾切,还可以写成这样
['a', 'c', 'e', 'g']
	
>>> name[::-1]		# 同样地,步长还可以是负数,当步长为 -1 时,相当于复制一个反转的列表
['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']

>>> name[::-2]
['h', 'f', 'd', 'b']

容易出错的地方:

>>> name[7:2:-2]	# 相当于从索引为 7 到 索引为 2 中,每隔 2 各元素取一个出来
['h', 'f', 'd']

>>> name[10:2:-2]	# 对于超出索引的,默认是从最后一个元素开始取
['h', 'f', 'd']

>>> name[100:2:-2]
['h', 'f', 'd']

三、列表深浅拷贝

浅拷贝

>>> A = name[:]    
>>> id(A)          
2004289344072      

深拷贝

>>> B = name   
>>> id(B)          
2004289245384  

>>> id(name)       
2004289245384 

原理透析

Python 的变量就像一个 标签,或者说是一个名字,它通过指针指向元素值,可以理解为下图所示:

深拷贝指向原来的值,两者 ID一致,浅拷贝是从原来的值上复制一个副本出来。

四、面试题

1、列表 l = [1, 2, 3, 4, 5, 6, 7, 8, 9],那么 print(l[10:3:-2]) 为多少?

>>> l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(l[10:3:-2])
[9, 7, 5]

2、输出值

A = 'apple'
B = A
B = 'banana'
print(A)

A 为字符串,是不可变类型,因此 A 的值始终不变,为:'apple'

3、输出值

A = ['apple']
B = A
B[0] = 'banana'
print(A)

= 是深拷贝,两者 ID 也相同,修改 B 会影响 A,修改 A 会影响 B,所以结果为: ['banana']

4、输出值

A = ['apple']
B = A[:]
B[0] = 'banana'
print(A)

[:] 是浅拷贝,只拷贝了第一层,修改不会有影响,所以结果为:['apple']

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

物联网开发服务开发虚拟设备需要几步?

云栖号快速入门:【点击查看更多云产品快速入门】 不知道怎么入门?这里分分钟解决新手入门等基础问题,可快速完成产品配置操作! 物联网平台设备的正常开发流程是:设备端开发完成,设备上报...

osc_2axit9df
11分钟前
18
0
互联网互联网必看文章墙裂推荐

后端必看文章系列 大型项目架构演进过程及思考的点

code-ortaerc
11分钟前
14
0
ACL2020论文整理 - 知乎

ACL2020录取文章已经放出,链接如下: ACL2020论文集合 www.aclweb.org 为了以后更加方便地阅读论文,也本着一颗开源之心,花一个下午的时间整理了一下相关论文。鉴于本人精力有限,并且也只...

osc_5w65ebjo
12分钟前
0
0
SU(N) Hubbard 模型平均场

osc_31d5oo2i
14分钟前
18
0
Python语言及其应用PDF高清完整版百度云盘免费下载|python基础教程PDF电子书推荐

编辑推荐 本书内容易于理解,而且读起来生动有趣,是编程和Python初学者不可多得的教程。书中首先介绍了Python的基础知识,然后逐渐深入多种主题,结合教程和攻略式风格来讲解Python 3中的概...

osc_nbg2lo7i
15分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部