python基础——列表切片操作
Posted i阿极
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础——列表切片操作相关的知识,希望对你有一定的参考价值。
python基础——列表切片操作
文章目录
一、实验目的
掌握列表切片操作
二、实验原理
1、列表是写在方括号[]之间、用逗号分隔开的元素列表。列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
2、和字符串一样,列表同样可以截取和被索引,列表被截取后返回一个包含所需元素的新列表,List中的元素是可以改变的。
3、切片,在形式上,切片使用2个冒号分割的3个数字来完成,第一个数字表示切片的开始位置(默认为0),第二个数字表示切片的截止(但不包括)位置(默认为列表长度),第三个数字表示切片的步长(默认为1),当步长省略时可以同时省略最后一个冒号。
4、切片适用于列表、元组、字符串、range对象等类型,应用于列表时具有最为强大的功能。可以使用切片来截取列表中的任何部分返回得到一个新列表,也可以通过切片来修改和删除列表中的部分元素,甚至可以通过切片操作为列表对象增加元素。
5、切片返回的是列表元素是潜复制,与列表对象的直接赋值不一样
6、切片常见格式如下:
格式:【start : end : step】
start:起始索引,从0开始,-1表示结束
end:结束索引
step:步长,end-start,步长为正时,从左向右取值。步长为负时,反向取值
注意切片的结果不包含结束索引,即不包含最后的一位,-1代表列表的最后一个位置索引
切片正负索引示例图:
三、实验环境
Python 3.6以上
Ipython
PyCharm
四、实验内容
列表切片操作
五、实验步骤
1.正向截取列表的全部内容,示例如下:
list1=[1,2,3,4,5,6]
list2=list1[:]
list3=list1[::]
list4=list1[::1]
print('list2:',list2)
print('list3:',list3)
print('list4:',list4)
示例结果如下:
注:list2=list1[:] 截取全部内容,可以用来将一个列表拷给另一个列表
list3=list1[::]从位置0开始到结束,默认每次增加1
2.反向输出列表全部内容,示例如下:
list1=[1,2,3,4,5,6]
list2=list1[::-1]
print('list2:',list2)
示例结果如下:
注:step的正负决定了切片结果中的元素排列的先后
3.取偶数位置和奇数位置的元素,示例如下:
listoj=[1,2,3,4,5,6]
listo=listoj[1::2]
listj=listoj[::2]
print('listo:',listo)
print('listj:',listj)
示例结果如下:
4.我们以截取列表中前两个元素为例,列出多种切片方法,示例如下:
lists=["A","B","C","D"]
list1=lists[0:2]
list2=lists[0:-2]
list3=lists[-4:-2]
list4=lists[-4:2]
print('list1:',list1)
print('list2:',list2)
print('list3:',list3)
print('list4:',list4)
示例结果如下:
5.截取列表中后两个元素,并且倒序输出为例,列出多种切片方法,示例如下:
lists=["A","B","C","D"]
list1=lists[-1:-3:-1]
list2=lists[-1:1:-1]
list3=lists[3:1:-1]
list4=lists[3:-3:-1]
print('list1:',list1)
print('list2:',list2)
print('list3:',list3)
print('list4:',list4)
示例结果如下:
6. start和end之间的元素间隔应和step方向一致,否则会切出空列表,示例如下:
lists=["A","B","C","D"]
list1=lists[-1:-3]
list2=lists[-1:1]
list3=lists[3:1]
list4=lists[3:-3]
print('list1:',list1)
print('list2:',list2)
print('list3:',list3)
print('list4:',list4)
示例结果如下:
7.(1)切片的结束位置大于列表长度时,从列表尾部截断;
(2)切片的开始位置大于列表长度时,返回空列表;
示例如下:
lists=[0,1,2,3,4,5,6,7,8,9]
list1=lists[0:20]
list2=lists[15:]
list3=lists[15:3:-1]
print('list1:',list1)
print('list2:',list2)
print('list3:',list3)
示例结果如下:
python基础语法列表的查询操作(包括切片)
目录
- 列表
- 列表的创建[]或list()
- 定位列表中的元素L[0]
- 查询列表中元素索引L.index()
- 列表的切片操作L[start:stop:step]
- L[slice(start,stop,step)]
- in/not in 查询是否包含某个元素,存在返回True
列表
- 列表是python内置的数据结构(列表、元组、字典、集合),相当于数组
- 列表中所有数据都是按顺序有序排列,列表属于序列类型
- 列表中的所有数据都有正数和负数的索引,通过指定的索引总能映射到唯一确定的数据
- 列表中可以存在重复的数据(区分set)
- 列表中可以保存任何类型的数据,多种类型的数据可以混合存储在一个列表中
- 列表可以根据需要动态地伸缩,系统会根据需要动态地分配和回收内存,使用前无须预先声明列表的容量
列表的创建[]或list()
- 用中括号[]创建列表,变量名不要取名为list或l,list是列表对应的类名,l容易被误认为数字1
- 调用内置函数list()(类list的构造方法)
L = [] # 创建空列表
L = [1,2,3,4,5,'python']
print(L) # [1, 2, 3, 4, 5, 'python']
list(rang(1, 5)) # 传入range对象 [1,2,3,4]
list([1,2,3,4,5,'python']) # 直接传入中括号[]
list() # 创建空列表
定位列表中的元素L[0]
- 使用索引获得列表的元素,如果指定的索引在列表中不存在,抛出错误IndexError: list index out of range
查询列表中元素索引L.index()
- 第一个元素索引是0,后续元素依次+1
- 最后一个元素索引是-1,前面元素依次-1
L = ['H','e','l','l','o'] # 定义列表,元素可以为数值,但怕给索引搞混了用了字符
L.index('e')
L.index('l')
L.index('h') # value error
L.index('l',2) # 从索引2开始找'l'
L.index('l',2,5) # 在[2, 4]内找'l'
- 获得列表中指定元素的索引调用方法index,只返回大于0的数值,比如L.index(‘e’) = 1,如列表中存在多个指定元素,方法index只返回第一个指定元素的索引值,比如L.index(‘l’) = 2,如果列表中不存在指定元素,抛出错误ValueError: ‘h’ is not in list
- 调用方法index时还可以指定起始索引start和结束索引stop两个参数,在一定范围内查找元素 (不包含索引stop处值)
列表的切片操作L[start:stop:step]
- 切片的语法格式
[start:stop:step]
- 得到的切片依然是列表,是原始列表的片段的一份拷贝
- 得到的切片不包括索引stop对应的元素
- 步长step默认值为1,这时可以简化为
[start:stop]
- 当step为正数时
- 如果不指定start,切片的第一个元素默认是列表是第一个元素
- 如果不指定stop,切片的最后一个元素默认是列表的最后一个元素
- 从索引start开始往后计算切片
- 当step为负数时
- 如果不指定start,切片的第一个元素默认为列表的最后一个元素
- 如果不指定stop,切片的最后一个元素默认是列表的第一个元素
- 从索引start开始往前计算切片
L = list('HelloWorld')
L[1:7:2]
L[1:6]
L[:] # 返回整个列表 输入L[]报错SyntaxError: invalid syntax
L[::-1] # 翻转整个列表
L[:-1] # stop指定为-1所在元素 ['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l']
L[6:0:-2]
L[0:6:-2] # start指定为0所在元素,往前看没有值,返回[]
L[8::-2] # ['l', 'o', 'o', 'l', 'H']
L[8:0:-2] # ['l', 'o', 'o', 'l'] 不包含stop指定的元素
L[-2:0:-2]
L[:3:-2]
- 切片操作允许索引越界(对比index不允许)
L = list('HelloWorld')
L[:100]
L[-100:]
L[slice(start,stop,step)]
- 可以调用内置函数slice(类slice的构造方法)创建slice类型的对象
- 内置函数slice有三种调用方式
- slice(stop)
- slice(start,stop)
- slice(start,stop,step)
- start、stop和step的默认值都是None
- slice(start,stop,step)与切片操作中的
start:stop:step
等价
L = list('HelloWorld')
L[slice(1,9,2)]
L[1:9:2]
L[::]
L[slice(None,None,None)] # L[slice(None)] 返回整个列表
L[1:7]
L[slice(1,7)]
L[:7]
L[slice(7)] #可以只输入stop,也可写作 L[slice(None, 7)]
in/not in 查询是否包含某个元素,存在返回True
L = list('HelloWorld')
print(5 in L) # False
以上是关于python基础——列表切片操作的主要内容,如果未能解决你的问题,请参考以下文章