Python 列表切片 |
您所在的位置:网站首页 › 列表切片python › Python 列表切片 |
想必很多人都使用过列表的切片,通过切片可以从列表中获取一个或多个元素,但你真的了解切片? 一、一般玩法 >>> 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'] |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |