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

news2024/9/23 7:28:46

文章目录

  • 一. 列表的概念
    • 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 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 代替

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

在这里插入图片描述

三. 列表的排序操作

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

  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.coloradmin.cn/o/351425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Webpack(应用一:基本使用,只需六步骤)

前言 上一篇文章已经说明了webpack的定义以及需求 本偏文章主要讲解webpack的基本使用 tips:现在以vscode编辑器来展示,只需要几个步骤就可以实现webpack的基本使用。 一、首先要安装node.js 1、不会安装node.js的,可以在网上自己找教程来…

Java:博客系统,实现加盐加密,分页,草稿箱,定时发布

文章目录1. 项目概述2. 准备工作2.1 数据库表格代码2.2 前端代码2.3 配置文件3. 准备项目结构3.1 拷贝前端模板3.2 定义实体类3.3 定义mapper接口和 xml 文件3.4 创建其他包4. 统一数据返回4.1 Result 类4.2 统一数据格式5. 注册5.1 逻辑5.2 验证数据规范性5.3 实现注册5.4 前端…

Teradata与中国市场官宣“分手”!国产数据库准备好了吗?

2月15日,西方的情人节刚刚过去一天,国内IT行业就爆出一个大瓜。 继Adobe、甲骨文、Tableau、Salesforce之后,又一个IT巨头要撤离中国市场。 Teradata天睿公司官宣与中国市场“分手”,结束在中国的直接运营。目前,多家…

记录--TS类型写不好?一起来训练提升吧!

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前期准备 本篇文章的编写目的是为了提升TS类型的书写质量,高质量的类型可以提高项目的可维护性并避免一些潜在的漏洞; 在学习本篇之前需要有一定的TS基础知识,在此基础上可以更…

wpgarlic:一款功能强大的WordPress插件模糊测试工具

关于wpgarlic wpgarlic是一款功能强大的WordPress插件模糊测试工具,该工具可以帮助广大研究人员查找WordPress插件漏洞。目前为止,该工具已经成功在大约1500万个网站上找出了140多个WordPress插件漏洞。 考虑到模糊测试工具的运行机制,即模…

mtb10_Presentations_tableau Animation(pages) to pdf to png or Animation

All Tableau authors are essentially storytellers. Analyzing data is more than just puzzle- solving; it is a search for a story that will make a difference. Topics can range from Airbnb爱彼迎(美国短租平台) to the Zika virus[ˈziːkə ˈvaɪrəs]寨卡病毒, an…

Java之滑动窗口详解

目录 一.滑动窗口 1.什么滑动窗口 2.滑动窗口的三要素 二.找到字符串中所有字母异位词 1.题目描述 2.问题分析 3.代码实现 三.字符串的排列 1.题目描述 2.问题分析 3.代码实现 四.考试的最大困扰度 1.题目描述 2.问题分析 3.代码实现 五.替换后的最长重复字符 …

git命令行推送本地分支到远程仓库

之前说过Git与IDEA强强联合(HTTPS协议连接)那么如何使用命令行来推送代码呢? 如下图所示为一个基于layui的前端代码: 目录工作区文件: 本地内容就是将这些内容推送到远程仓库 首先使用git命令初始化git本地仓库&…

阿里巴巴测试岗,3面都过了,到头来却因为这个原因被刷了...

说在前面 面试时最好不要虚报工资。本来阿里巴巴是很想去的,几轮面试也通过了,最后没offer,自己只想到下面几个原因 虚报工资,比实际高30%;有更好的人选,这个可能性不大,我看还在招聘。我是面…

【Redis】Redis持久化之AOF详解(Redis专栏启动)

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公…

Windows11安装OpenSSH客户端,实现ssh远程连接云服务器

一、打开设置 - 应用 - 添加可选功能,选择安装OpenSSH客户端 二、安装完之后,验证 ssh 命令 1、启动ssh服务之后,打开 cmd 窗口已支持连接 三、如果 ssh 命令仍然不生效,需要配置 ssh 环境变量 1、新建 SSH_HOME 环境变量&#…

2023 年前端十大 Web 发展趋势

很长一段时间,Web 开发的前景似乎没有什么进展(2016 年至 2021 年),但在刚刚过去的 2022 年中确实又猛窜了一波。今天主要想跟大家聊聊最新 Web 开发趋势。相信这波浪潮会继续激发 Web 开发者的关注,对万象更新的 2023…

视频连载11 - 这个为生信学习和生信作图打造的开源R教程真香!!!

点击阅读原文跳转完整教案。1 思考题2 R基础2.1 R安装2.2 Rstudio基础2.2.1 Rstudio版本2.2.2 Rstudio安装2.2.3 Rstudio 使用2.3 R基本语法2.3.1 获取帮助文档,查看命令或函数的使用方法、事例或适用范围2.3.2 R中的变量及其初始化2.3.3 变量类型和转换2.3.4 R中矩…

MYSQL安装部署--Linux 仓库安装

声明 :# 此次我们安装的 MYSQL 版本是 8.0.32 版本 我们本次安装 MYSQL 总共要介绍 四种方式 # 仓库安装# 本地安装# 容器安装# 源码安装我们本篇介绍的是 仓库安装 仓库安装 下载 MYSQL 安装包 # MYSQL 安装,我们都是基于 MYSQL 官方网站里进行下载~&a…

计数系统架构设计(转)

本文主要节选和总结自沈剑大佬的 计数系统架构实践一次搞定 | 架构师之路和文章的评论,略有删改 一、问题描述 很多业务都有“计数”需求,以微博为例: 微博首页的个人中心部分,有三个重要的计数:关注了多少人的计数、粉…

如何编写一个基本的 Verilog Module(模块)

1、概述这篇文章主要介绍了 Verilog 在 FPGA 设计中的概念和使用方法。首先讨论使用模块(module)关键字构造 Verilog 设计的方式,以及这与所描述的硬件的关系。这包括对参数、端口(port)和例化(instantiato…

JSON Web Token (JWT)

1,什么是JWT JWT是JSON Web Token是简称,是一个行业开发标准(RFC 7519)定义了一种简介的 自包含的协议格式,用于在通信双方传递JSON对象,传递的信息经过数字签名可以被验证和信任。它可以使用HMAC算法或使…

4.如何靠IT逆袭大学?

学习的动力不止于此: IT逆袭 这两天利用工作空余时间读了贺利坚老师的《逆袭大学——传给 IT 学子的正能量》,感触很多,有些后悔没有好好利用大学时光。 不过人都是撞了南墙再回头的,吃一堑长一智。 这本书无论你是工作了还是…

DataX简介、部署、原理和使用介绍

DataX简介、部署、原理和使用介绍 1.DataX简介 1-1.项目地址 项目地址:https://github.com/alibaba/DataX 官方文档:https://github.com/alibaba/DataX/blob/master/introduction.md 1-2.DataX概述 ​ DataX 是阿里云 DataWorks数据集成 的开源版本…

JDK安装环境变量配置

jdk下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 下载安装包和exe都可。 安装JDK 安装JDK时,除了修改安装目录,其他的一路【下一步】,傻瓜式安装。 (注:当提示安装JRE时…