一. 列表的概念
1.1 列表是什么?
列表的英文单词是list, 它是python中一种可以动态添加和删除内容的数据类型,又很多个元素组成。 通俗的说就是列表就是将多个变量组合在一起的容器。
1.2 为什么要使用列表?
我们都知道变量可以存储一个元素,而列表是一个大容器,可以存储N个元素,程序可以方便的对这些元素进行操作。
在Python中一切皆为对象,所以变量存储的就是一个对象的引用。
1.3 列表的定义
列表的格式定义如下:
my_list = [元素1,元素2,元素3...]
列表中每一个数据称作元素活着项,列表用[] 包裹,每个元素用英文的,
分割,列表可以直接打印输出:
my_list = ["apple", "orange", "grape", "pear"]
print(my_list)
列表中也可以是相同的元素,比如:
my_list = ["mufeng", "mufeng", "19", "19"]
print(my_list)
列表中也可以加别的类型,比如再增加个列表:
my_list = ["mufeng", "mufeng", "19", "19" , ["apple", "orange", "grape", "pear"]]
print(my_list)
执行结果:
二. 列表的增删改查操作
2.1 列表的读取
列表示意图:
这里需要学习两个名词:一个是索引,另一个是下标,这两个词是同一个意思,都是为了准确的获取列表中的元素。
列表中的索引是从0开始的,如果是倒序就从-1开始。
在上面的图表中: 索引为0的元素是 hello, 索引为1的是world, 依次类推。
案例一: 我们来看看一个列表的ID和他的类型,已经最终展示的形态
lst=['hello','world',123,96.6,"world",125,"world"]
print(id(lst))
print(type(lst))
print(lst)
案例二: 从案例一点列表中分别取出下标为1,2,3,4的元素以及倒数第一个和第二个
lst=['hello','world',123,96.6,"world",125,"world"]
print("索引为0的元素", lst[0])
print("索引为1的元素" ,lst[1])
print("索引为2的元素", lst[2])
print("索引为0的元素", lst[3])
print("索引为4的元素", lst[4])
#倒序
## 获取最后一个元素 -1
print("列表最后一个元素", lst[-1])
print("列表倒数第二个元素" ,lst[-2])
执行结果:
案例三: 根据索引获取指定的元素
lst=['hello','world',19,'mufeng']
print(lst.index('hello'))
print(lst.index(19,1,4))
执行结果
0
2
这里就是根据元素hello查找索引 ,结果为0
在索引1-4里查找19的索引,结果为2
2.2 列表的切片
在对列表的操作中经常遇到这中操作:
- 获取1-3项元素
- 获取第1,3,5,7项元素
- 获取第4-6项目元素
这些在编程中被成为切片操作。
具体的语法如下:
# 读取从索引 m 到 n-1 的列表元素
my_list[m:n]
# 读取列表的前 n 项元素
my_list[:n]
# 读取列表从 m 开始到结尾的元素
my_list[m:]
# 间隔 s,读取从 m 到 n 的列表元素
my_list[m:n:s]
案例一: 步长为正数的时候
lst=[1,2,3,4,5,6,7,8,9,]
print(lst[1:6:1]) #[2, 3, 4, 5, 6]
lst[1:6:1] 表示: 从索引1开始到索引6结束,步长为1,一般默认步长为1
案例二:步长为正数其他写法:
步长如果省略不写,则默认为1
lst=[1,2,3,4,5,6,7,8,9,]
print(lst[1:6:1]) #[2, 3, 4, 5, 6]
print(lst[1:6])
print(lst[1:6:])
print(lst[1:6:2])
print(lst[:6:2])
结果:
案例三: 步长为负数的情况
lst=[1,2,3,4,5,6,7,8,9,]
print(lst[::-1])
这种情况相当于取反结果为:
[9, 8, 7, 6, 5, 4, 3, 2, 1]
也这可以这么写:
lst=[1,2,3,4,5,6,7,8,9,]
print(lst[8::-1]) #[9, 8, 7, 6, 5, 4, 3, 2, 1]
2.3 列表的查询操作
2.3.1 not in ,in 表达式
判断指定元素是否在列表中存在
- 元素in 列表名
- 元素 not in 列表名
lst=[1,2,3,4,5,6,7,8,9,]
print(2 not in lst)
2.3.2 列表元素遍历
元素遍历也是查询过程中的一种,先遍历出来在最遍历出来的内容做操作。
语法:
for 可迭代变量 in 列表
lst=[1,2,3,4,5,6,7,8,9,]
for item in lst:
print(item)
2.4 列表元素的增加操作
列表元素的增加操作有以下几个函数:
append() 在列表末尾加一个元素
extend() 在列表末尾添加一个元素
insert() 在列表的任意位置添加一个元素
切片: 在列表的任意位置添加一个元素
2.4.1 append()的相关用法
案例一: 使用append()函数在列表末尾加上一个元素:
lst=[1,2,3]
print("添加元素之前",lst,id(lst))
lst.append(100)
print('添加元素之后',lst,id(lst))
执行结果:
可以看到,ID是相同的,也就是没有生成新的列表
案例二: 使用append()方法 追加一个列表
lst=[1,2,3]
print("添加元素之前",lst,id(lst))
lst.append(100)
print('添加元素之后',lst,id(lst))
lst2=['hello','world']
lst.append(lst2)
print(lst)
输出:
这里可以看到,append可以将列表 lst2作为一个元素添加到末尾
2.4.2 extend()方法的相关用法
extend() 是扩展到意思,我们来看案例:
lst=[1,2,3]
lst2=['hello','world']
print(lst)
lst.extend(lst2)
print(lst)
执行结果:
这里可以发现,我们用extend追加列表,是把列表的内容写到原来的lst中了,并不是把LST2作为一个整体插入的。
append 方法可以给列表追加元素,而extend可以给列表追加一个列表,相当于将两个列表进行连接。
2.4.3 insert() 方法的使用
上面我们学习过的append是在列表的末尾固定插入元素,而insert 是在任意位置插入,语法如下:
my_list.insert(索引位置,"新增元素")
案例一: 我们尝试在索引2的位置,插入90
lst=[1,2,3]
lst.insert(2,90)
print(lst)
执行结果:
[1, 2, 90, 3]
2.4.4 用切片的方式在任意位置添加元素
切片也可以在任意位置添加元素,比如lst[2:] 表示把索引为2,且包括索引2后面的内容切掉
lst=[1,2,3,4]
lst3=['hello','world','沐风晓月']
lst[2:]=lst3
print(lst)
可以看到,它把索引2后面的都切掉了,然后把lst3添加到lst里了
切片实际上就是切掉一部分,用新的替换
2.5 列表元素的删除
列表元素的删除也有多个方法,如下:
-
remove() 一次删除一个元素,重复元素只删除第一个,元素不存在抛出valueerror
-
pop() 删除一个指定索引位置上的元素
-
切片: 一次至少删除一个元素(切片会产生一个新的列表对象)
-
clear() 清空列表
-
del() 删除列表
案例一: 删除索引为2的元素
lst=[1,2,3,4]
lst.pop(2)
print(lst) #[1, 2, 4]
案例二: 不指定索引默认删除最后一个元素
lst=[1,2,3,4]
#pop() 不指定索引删除最后一个
lst.pop()
print(lst)#[1, 2, 3]
案例三: 直接删除指定的元素 remove()
pop方法需要按照索引删除的元素,而remove直接可以指定元素,但remove删除元素后,不会返回被删除的元素,另外当列表中不存在被删除的元素,会提示代码错误。
如果被删除的元素有重名的情况,默认删除第一个
语法格式为:
my_list.remove(待删除元素内容)
lst=[1,2,3,4]
lst3=['hello','world','沐风晓月']
lst3.remove("hello")
执行结果:
这里不会返回任何结果,不像pop方法,还会显示被删除后的列表:
案例四: 清空列表 clear()方法
清空后,还存在列表,但是删除后就没有了,删除列表用del list
lst=[1,2,3,4]
#clear() 清空列表
lst.clear()
print(lst)
删除列表
lst=[1,2,3,4]
del lst
print(lst)
删除后就没有了,打印会提示没有定义
2.6 列表元素的修改
列表元素的修改:
- 为指定索引元素赋新值
- 为指定的切片赋予一个新值
lst=[1,2,3,4]
#一次修改一个值
lst[2]=100
print(lst)#[1, 2, 100, 4]
使用切片来替换
lst=[1,2,3,4]
lst[1:3]=[30,40,50,60]
print(lst)
这个就是把2和3去掉,然后用30,40,50,60 代替
如果你已经看到了这里,那你:
三. 列表的排序操作
除了对列表增删改查外还会涉及到排序等相关的操作,使用固定的方法即可。
两种方法:
- 调用sort()方法,列表中所有的元素默认按照从小到大的顺序来排序,可以指定reverse=True 进行降序排序
- 调用内置函数 sorted() ,可以指定reverse=True进行降序排序,原列表不发生改变。此方法会产生一个新的列表对象
3.1 sort方法的排序操作
默认从小到大,也可以修改为从大到小,该方法一般用于纯数字或者纯英文字符的列表排序。
语法格式:
my_list.sort()
案例一: 声明一个包含数字的列表进行排序
lst=[1,2,3,4,88,77,5,46]
print('排序前的列表',lst)
lst.sort()
print('排序后的列表',lst)
lst.sort(reverse=True)
print('降序排序',lst)
3.2 使用sorted进行排序
sort排序会对源列表进行永久修改,很多时间并不需要修改原列表,这种情况下就可以借助于sorted函数。 需要注意的是 sorted是一个内置函数,并不是列表的方法,也就是sorted可以对很多种类的对象进行排序。
语法:
sorted(待排序列表) # 正序,从小到大
sorted(待排序列表,reverse=True) # 逆序,从大到小
案例一: 定义一个list列表并进行排序
lst=[1,2,3,4,88,77,5,46]
print('排序前的列表',lst)
newlst=sorted(lst)
print(lst)
print(newlst)
两个区别就是: sort()是对原列表进行操作,sorted()是生成新列表,生成的新列表需要用新变量接收。
四. 列表的其他方法
4.1 统计某元素在列表中出现的次数
通过count方法可以获取元素在列表中出现的次数:
次数 = my_list.count(待查找值)
案例: 查找3在列表中出现的次数
my_list = [3, 4, 3, 2, 3, 8, 7]
nums = my_list.count(3)
print(nums)
4.2 列表转换为字符串
通过john方法可以将所有的元素组合成一个字符串,语法如下:
连接字符串.join(待转换列表)
my_list = ["pear", "apple", "orange"]
my_str = "#".join(my_list)
print(my_str)
执行结果:
4.3 将字符串转换为列表
通过内置函数 list,可以将字符串转换成列表,类似于强制转换:
my_str = "abcdefghi"
print(list(my_str))
结果如下:
字符串也有自己的方法,我们给他变成列表就可以使用列表的方法。对于列表的方法比较多,需要反复练习。
总结
✨
👍
⭐️
✏️
文章出处登录后可见!