【python百炼成魔】python之列表详解

news/2024/11/8 9:10:00/

文章目录

  • 一. 列表的概念
    • 1.1 列表是什么?
    • 1.2 为什么要使用列表?
    • 1.3 列表的定义
  • 二. 列表的增删改查操作
    • 2.1 列表的读取
    • 2.2 列表的切片
    • 2.3 列表的查询操作
      • 2.3.1 not in ,in 表达式
      • 2.3.2 列表元素遍历
    • 2.4 列表元素的增加操作
      • 2.4.1 append()的相关用法
      • 2.4.2 extend()方法的相关用法
      • 2.4.3 insert() 方法的使用
      • 2.4.4 用切片的方式在任意位置添加元素
    • 2.5 列表元素的删除
    • 2.6 列表元素的修改
  • 三. 列表的排序操作
    • 3.1 sort方法的排序操作
    • 3.2 使用sorted进行排序
  • 四. 列表的其他方法
    • 4.1 统计某元素在列表中出现的次数
    • 4.2 列表转换为字符串
    • 4.3 将字符串转换为列表
  • 总结

在这里插入图片描述

一. 列表的概念

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 lstprint(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 代替

如果你已经看到了这里,那你:

在这里插入图片描述

三. 列表的排序操作

除了对列表增删改查外还会涉及到排序等相关的操作,使用固定的方法即可。
两种方法:

  1. 调用sort()方法,列表中所有的元素默认按照从小到大的顺序来排序,可以指定reverse=True 进行降序排序
  2. 调用内置函数 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))

结果如下:

在这里插入图片描述
字符串也有自己的方法,我们给他变成列表就可以使用列表的方法。对于列表的方法比较多,需要反复练习。

在这里插入图片描述

总结

原创不易,还希望各位大佬支持一下\textcolor{blue}{原创不易,还希望各位大佬支持一下}原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力!\textcolor{green}{点赞,你的认可是我创作的动力!}点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!\textcolor{green}{收藏,你的青睐是我努力的方向!}收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!\textcolor{green}{评论,你的意见是我进步的财富!}评论,你的意见是我进步的财富!


http://www.ppmy.cn/news/25731.html

相关文章

【Azure 架构师学习笔记】-Azure Logic Apps(7)- 自定义Logic Apps 调度

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Logic Apps】系列。 接上文【Azure 架构师学习笔记】-Azure Logic Apps(6)- Logic Apps调用ADF 前言 在稍微了解Logic Apps的使用之后,需要开始考虑如何调度起来。在Logic Apps里面…

2023美国大学生数学建模竞赛(美赛)思路代码

2023美国大学生数学建模竞赛(美赛)思路&代码报名时间节点比赛说明问题A(数据分析题):收干旱影响的植物群落(MCM)第一问第二问问题B(仿真建模题):重塑马赛…

HTML中嵌入B站视频

HTML中嵌入B站视频 在网页中实现一个HTML播放器需要先从b站获取视频嵌入代码, 以前嵌入代码可以从视频分享那里拿到, 现在好像不行了 必须是自己投稿的视频, 从投稿管理页面才能找到 复制嵌入代码 建一个.html文件, 放入下面代码 <!DOCTYPE html> <html><head…

第八章 - 数据分组( group by , having , select语句顺序)

第八章 - 数据分组 group by数据分组过滤分组 having分组排序groub by语句的一些规定select语句顺序数据分组 在使用group by进行分组时&#xff0c;一般都会配合聚合函数一起使用&#xff0c;实现统计数据的功能。比如下面例子&#xff0c;需要按性别计算人数。按性别进行分组…

2023年美赛ICM问题E:光污染 这题很好做啊!

2023年美赛ICM问题E:光污染 这题很好做啊&#xff01;![在这里插入图片描述](https://img-blog.csdnimg.cn/e918cc6fc9214b53bf4859063bfe56b0.png#pic_center) 我看到DS数模的分析&#xff0c;看似头头是道&#xff0c;实则GouPi不通&#xff0c;我出一个&#xff0c;用于大家…

mysql事务隔离级别

mysql锁机制及原理1.隔离级别2.实践2.1查看事务隔离级别2.2 设置隔离级别2.3 不可重复读2.4 幻读3.幻读怎么解决3.1 Record Lock3.2 Gap Lock3.3 Next-Key Lock引用&#xff1a;https://blog.csdn.net/xinyuan_java/article/details/1284932051.隔离级别 SERIALIZABLE(序列化)…

微服务项目【分布式锁】

创建Redisson模块 第1步&#xff1a;基于Spring Initialzr方式创建zmall-redisson模块 第2步&#xff1a;在zmall-redisson模块中添加相关依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</a…

一文了解JAVA中同步、异步、阻塞和非阻塞

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;JAVA中同步、异步、阻塞和非阻塞 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加…