(八)彻底搞懂Python切片操作

您所在的位置:网站首页 python切片函数stri (八)彻底搞懂Python切片操作

(八)彻底搞懂Python切片操作

2024-01-25 16:10| 来源: 网络整理| 查看: 265

目录 Python切片一、使用切片获取列表部分元素二、使用切片为列表增加元素三、使用切片替换和修改列表中的元素四、使用切片删除列表中的元素

Python切片

在形式上,切片使用2个冒号分隔的3个数字来完成。

[start:end:step] 第一个数字start表示切片开始位置,默认为0;第二个数字end表示切片截止(但不包含)位置(默认为列表长度);第三个数字step表示切片的步长(默认为1)。当start为0时可以省略,当end为列表长度时可以省略,当step为1时可以省略,省略步长时还可以同时省略最后一个冒号。当step为负整数时,表示反向切片,这时start应该在end的右侧才行。

:n代表n之前的; ::n代表间隔为n; n:代表n之后的。

一、使用切片获取列表部分元素

使用切片可以返回列表中部分元素组成的新列表。与使用索引作为下标访问列表元素的方法不同,切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表,代码具有更强的健壮性。 下面是一些切片操作:(正数从左数,复数从右数)

>>> aList = [3, 4, 5, 6, 7, 9, 11, 13, 15, 17] >>> aList[::] #返回包含原列表中所有元素的新列表 [3, 4, 5, 6, 7, 9, 11, 13, 15, 17] >>> aList[::-1] #返回包含原列表中所有元素的逆序列表 [17, 15, 13, 11, 9, 7, 6, 5, 4, 3] >>> aList[::2] #隔一个取一个,获取偶数位置的元素 [3, 5, 7, 11, 15] >>> aList[1::2] #隔一个取一个,获取奇数位置的元素 [4, 6, 9, 13, 17] >>> aList[3:6] #指定切片的开始和结束位置 [6, 7, 9] >>> aList[0:100] #切片结束位置大于列表长度时,从列表尾部截断 [3, 4, 5, 6, 7, 9, 11, 13, 15, 17] >>> aList[100] #抛出异常,不允许越界访问 IndexError: list index out of range >>> aList[100:] #切片开始位置大于列表长度时,返回空列表 [] >>> aList[-15:3] #进行必要的截断处理 [3, 4, 5] >>> len(aList) 10 >>> aList[3:-10:-1] #位置3在位置-10的右侧,-1表示反向切片 [6, 5, 4] >>> aList[3:-5] #位置3在位置-5的左侧,正向切片 [6, 7] 二、使用切片为列表增加元素

可以使用切片操作在列表任意位置插入新元素,不影响列表对象的内存地址,属于原地操作。

>>> aList = [3, 5, 7] >>> aList[len(aList):] = [9] #在列表尾部增加元素 >>> aList[:0] = [1, 2] #在列表头部插入多个元素 >>> aList[3:3] = [4] #在列表中间位置插入元素 >>> aList #插入后的列表: [1, 2, 3, 4, 5, 7, 9] 三、使用切片替换和修改列表中的元素

注意冒号的位置!

>>> aList = [3, 5, 7, 9] >>> aList[:3] = [1, 2, 3] #替换列表元素,等号两边的列表长度相等 >>> aList [1, 2, 3, 9] >>> aList[3:] = [4, 5, 6] #切片连续,等号两边的列表长度可以不相等 >>> aList [1, 2, 3, 4, 5, 6] >>> aList[::2] = [0]*3 #隔一个修改一个(用三个0替换) >>> aList [0, 2, 0, 4, 0, 6] >>> aList[::2] = ['a', 'b', 'c'] #隔一个修改一个 >>> aList ['a', 2, 'b', 4, 'c', 6] >>> aList[1::2] = range(3) #序列解包的用法 >>> aList ['a', 0, 'b', 1, 'c', 2] >>> aList[1::2] = map(lambda x: x!=5, range(3)) >>> aList ['a', True, 'b', True, 'c', True] >>> aList[1::2] = zip('abc', range(3)) #map、filter、zip对象都支持这样的用法 >>> aList ['a', ('a', 0), 'b', ('b', 1), 'c', ('c', 2)] >>> aList[::2] = [1] #切片不连续时等号两边列表长度必须相等 ValueError: attempt to assign sequence of size 1 to extended slice of size 3 四、使用切片删除列表中的元素

等号右边为空!

```python >>> aList = [3, 5, 7, 9] >>> aList[:3] = [] #删除列表中前3个元素 >>> aList [9]

也可以结合使用del命令与切片结合来删除列表中的部分元素,并且切片元素可以不连续。

>>> aList = [3, 5, 7, 9, 11] >>> del aList[:3] #切片元素连续 >>> aList [9, 11] >>> aList = [3, 5, 7, 9, 11] >>> del aList[::2] #切片元素不连续,隔一个删一个 >>> aList [5, 9]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3