list 根据某个数字所在位置_一步一步学Python3(小学生也适用) 第十一篇: 列表List类型...

前面三篇,我都在介绍字符串(str)类型,这一篇我们将进行列表(List)数据类型学习。在介绍列表前,我们先来了解一下Python序列的知识

一、序列

序列指的是一块可存放多个值的连续内存空间,这些值按一定的顺序排列,可通过每个值所在的位置的编号(索引)访问它们。看到这里我们是不是想到了下面这幅图:

f3e82cb462af73431182db04158109ab.png

是的,在Python中,序列类包括字符串、列表、元组、字典和集合,这些序列支持多种通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作。

1.1Python提供的一些内置函数,可实现序列相关的一些常见操作。

len()

计算序列的长度,即返回序列中包含多少个元素。

max()

找出序列中的最大元素。注意,对序列使用 sum() 函数时,做加和操作的必须都是数字,不能是字符或字符串,否则该函数将抛出异常,因为解释器无法判定是要做连接操作(+ 运算符可以连接两个序列),还是做加和操作。

min()

找出序列中的最小元素。

list()

将序列转换为列表。

str()

将序列转换为字符串。

sum()

计算元素和。

sorted()

对元素进行排序。

reversed()

反向序列中的元素。

enumerate()

将序列组合为一个索引序列,多用在 for 循环中。

二、列表(List)

列表是最常用的Python数据类型,列表的数据项不需要相同的类型。

它是以方括号内逗号分隔值出现的。

2.1 创建一个列表

只需要把逗号分隔的不同数据所有项用方括号([ ])括起来即可

list1 = ['hello','python',18,19]   #数据项可以为不同类型list2 = []            #空列表print(list1)print(list2)

运行结果:

['hello', 'python', 18, 19][]

2.2、添加新的元素

list1.append() 在list1末尾增加一个元素

list1.insert(n,'n1') 在指定位置添加元素,如果指定的下标不存在,那么就在末尾添加

list1.extend(list2) 合并两个list1,list2

list1 = [1,2,3,4]list2 = [7,8,9]list1.append(6)        #在list1末尾增加一个元素print(list1)list1.insert(4,5) #在list1索引为4的位置增加一个元素print(list1)list1.extend(list2) #在list1基础上合并list2print(list1)print(list2)

运行结果:

[1, 2, 3, 4, 6][1, 2, 3, 4, 5, 6][1, 2, 3, 4, 5, 6, 7, 8, 9][7, 8, 9]

运行截图:

527f19aeec9c7548f213230d66b62fd1.png

2.3查看列表中的值

list1 = [1,2,3,4,5,4]print(list1[1]) #使用列表索引来访问列表的值,取从左到右第二个值print(list1[-1]) #使用列表索引来访问列表的值,取最右边的值print(list1.count(4)) #查看某个元素在这个列表里的个数,如果没有,就返回0print(list1.index(4))    #查看某个元素的索引,如果有多个,则返回第一个,如果没有则会报错print(list1.index(6))    #6不存在列表中,会返回错误

运行结果:

2423Traceback (most recent call last): File "g:/老树Python/python38_3VScode/democode/T11.py", line 6, in print(list1.index(6))ValueError: 6 is not in list

List中的值遍历(for  in 循环)

list1 = ['hello','python','world']#使用for in 循环遍历for item in list1: print(item)

运行结果:

hellopythonworld

for  in 循环可遍历列表,字符串,字典,元组等序列,以后会有专门的篇幅进行讲解。

2.4 删除list中的元素

list1 = [1,2,3,4,5,6]#pop()删除最后一个元素print(list1.pop())print(list1)#pop()删除指定索引元素,如果索引不存在,则会报错print(list1.pop(4))print(list1)#remove()删除list里面的元素,有多个相同的元素,删除和一个print(list1.remove(3))print(list1)

运行结果:

6                      # list1.pop()返回的结果为删除的项[1, 2, 3, 4, 5]        #list1的列表值已删除指定元素5                      #list1.pop(4)返回的结果为删除的项 [1, 2, 3, 4] #list1的列表值已删除指定元素None                   #list1.remove(3)删除成功后不返回删除的项[1, 2, 4]              #list1的列表值可确list1.remove(3)删除3成功

del 删除法

list1 = ['hello','python','world]del list1[2] #删除列表下标为2的项print(list1)del list1               #删除整个列有,删除后列表无法访问print(list1)

运行结果:

['hello', 'python']Traceback (most recent call last): File "g:/老树Python/python38_3VScode/democode/T11.py", line 5, in print(list1)NameError: name 'list1' is not defined

2.5 排序和反转(针对相同的数据类型)

list1 = [1,2,3,4,5,6]print(list1.reverse()) #将列表反转print(list1)print(list1.sort()) # 排序,默认升序print(list1)print(list1.sort(reverse=True)) #降序排列print(list1)

运行结果:

None                        #list1.reverse()不返回值[6, 5, 4, 3, 2, 1]          #新的list1项已与原项顺序反转None #list1.sort()不返回值[1, 2, 3, 4, 5, 6]          #.sort()默认升序排列None                        #list1.sort()不返回值[6, 5, 4, 3, 2, 1] #.sort(reverse=True)降序排列

上述例子是对数值进行排序,那们下面代码是对列项为字符串进行排序。

list1 = ['hello','aython','word']print(list1.reverse()) #将列表反转print(list1)print(list1.sort()) # 排序,默认升序print(list1)print(list1.sort(reverse=True)) #降序排列print(list1)

运行结果:

None['word', 'aython', 'hello']None['aython', 'hello', 'word']None['word', 'hello', 'aython']

字符串大小的对比规则是:先比较字符串第一个字母的ord()值,按值大小升降序,如果第一个字母ord()值一样,那么就进行第二个字母ord()值比较,直到分出大小为止。
我们来看看列表的三个字符串首字母的ord()值

print(ord('h'))print(ord('a'))print(ord('w'))

运行结果:

10497119

字符串排序,一看就明了。

2.6 操作列表的其他函数

list1 = ['hello','aython','word']print(len(list1)) #返回列表元数个数print(max(list1)) #返回列表元素最大值print(min(list1))   #返回列表元素最小值

运行结果:

3wordaython

2.7列表的切片

前面我们学习了字符串的切片,列表的切片跟字符串的操作方法一样。

我们先看看字符串切片中的一些内容:

正序索引是从左往右对字符串中的字符进行索引,第一个字符的索引从0开始。倒序索引是从右往左对字符串中的字符进行索引,最右边的字符的索引从-1开始。

得到对应索引范围的元素,该范围包围起始端,不包含结尾端(左闭右开型)默认截取方向从左往右。注意:反向索引时,也是左闭右开型

按步长获取间隔的字符串,语法为 str1[start:end:step](切片语法:[起始:结束:步长]) 按照step步长进行隔取;默认步长为1

大家可以先返回该系列教程中去再看一篇字符串切片方法,然后再来看我们List切片操作方法,就会感觉完全一样。

list1 = ['hello','python','word','very','good']print(list1[0:3])print(list1[-4:-1])print(list1[1:4])

运行结果:(所有结果都为左闭右开型,即取起始索引值,不取结束索引值)

['hello', 'python', 'word']     #取索引为 0,1,2的值['python', 'word', 'very']      #取索引为 -4,-3,-2的值['python', 'word', 'very']      #取索引为 1,2,3的值

按步长来取值:list1[start:end:step]

其中start为超始索引,end为结束索引,step为步长,默认为1

list1 = [1,2,3,4,5,6,7,8,9]print(list1[1:8:2])

运行结果:

[2, 4, 6, 8]

由此我们可以看到,List切片方法完全跟字符串一样,如果还有不明白请看第九篇字符串切片的相关知识。

结束语:

这一篇我们主要学习了列表(List),里面的各种操作函数方法。大家可以根据所看到的内容,自行深入的去了解,List也是非常重的Python数据类型。另外还有一个非常重的知识点没讲,列表生成式,这个知识将在讲 for  in 循环遍历的时候再去讲。

☆ END ☆

推荐阅读:

一步一步学Python3(小学生也适用) 第十篇: 字符串(str)类型(下)

一步一步学Python3(小学生也适用) 第九篇: 字符串(str)类型(中)

一步一步学Python3(小学生也适用) 第八篇: 字符串(str)类型(上)

一步一步学Python3(小学生也适用) 第七篇: 小数/浮点数(float)类型

一步一步学Python3(小学生也适用) 第六篇:  变量及整数(int)类型

7330b6bc85d86b2191d3b534b4383bd0.png

长按关注"老树Python"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值