列表(list)篇(一)
文章目录
- 2.1 创建列表
- 2.2 append()函数
- 2.3 clear()函数
- 2.4 copy()函数
- 2.5 count()函数
- 2.6 del
- 2.7 enumerate()函数
- 2.8 extend()函数
- 2.9 index()函数
2.1 创建列表
在Python中,列表(list)是一种基础的数据结构,可以包含不同类型的元素,并且这些元素是有序排列的。列表的元素可以是整数、浮点数、字符串、布尔值,甚至是其他列表(嵌套列表)等。
要定义一个列表,你可以使用方括号 [],并在其中放置用逗号分隔的元素。下面是一些示例:
# 定义一个空列表
empty_list = []# 定义一个包含整数的列表
integer_list = [1, 2, 3, 4, 5]# 定义一个包含不同类型元素的列表
mixed_list = [1, "hello", 3.14, True]# 定义一个包含嵌套列表的列表
nested_list = [1, [2, 3], [4, [5, 6]]]# 使用列表推导式定义一个列表,包含0到9的平方
squared_list = [x**2 for x in range(10)]# 输出列表
print(empty_list)
print(integer_list)
print(mixed_list)
print(nested_list)
print(squared_list)当你运行这些代码时,你将看到如下输出:[]
[1, 2, 3, 4, 5]
[1, 'hello', 3.14, True]
[1, [2, 3], [4, [5, 6]]]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
列表提供了许多内置的方法和操作,例如 append() 来添加元素,remove() 来删除元素,pop() 来移除并返回列表的最后一个元素,index() 来查找元素的索引等。这些方法和操作使得列表成为Python中非常灵活和有用的数据结构。
2.2 append()函数
在Python中,list 是一种数据结构,用于存储一系列有序的元素。append() 是 list 类型的一个方法,用于在列表的末尾添加一个新元素。
以下是 append() 方法的基本用法:
# 创建一个空列表
my_list = []# 使用append()方法向列表中添加元素
my_list.append(1) # 列表变为 [1]
my_list.append(2) # 列表变为 [1, 2]
my_list.append(3) # 列表变为 [1, 2, 3]# 打印列表以查看结果
print(my_list) # 输出: [1, 2, 3]
append() 方法只接受一个参数,即要添加到列表末尾的元素。它不会返回新的列表,而是直接修改原始列表。
需要注意的是,append() 是在列表的末尾添加元素,而不是在指定索引位置。如果你需要在特定索引位置插入元素,应使用 insert() 方法:
# 在索引1的位置插入元素'b'
my_list.insert(1, 'b') # 列表变为 [1, 'b', 2, 3]print(my_list) # 输出: [1, 'b', 2, 3]
在这个例子中,‘b’ 被插入到 my_list 的第二个位置(索引为1,因为索引是从0开始的)。
2.3 clear()函数
在Python中,list 类型有一个 clear() 方法,用于移除列表中的所有元素,将其变为一个空列表。这个方法不接受任何参数,并且没有返回值。调用 clear() 之后,原来的列表将不再包含任何元素。
下面是一个使用 clear() 方法的例子:
# 创建一个包含元素的列表
my_list = [1, 2, 3, 4, 5]# 打印原始列表
print("Original list:", my_list) # 输出: Original list: [1, 2, 3, 4, 5]# 使用clear()方法清空列表
my_list.clear()# 打印清空后的列表
print("Cleared list:", my_list) # 输出: Cleared list: []
在这个例子中,my_list 初始时包含5个元素。调用 my_list.clear() 之后,列表中的所有元素都被移除了,my_list 变成了一个空列表。
需要注意的是,clear() 方法直接修改了原始列表,而不是创建一个新的空列表。因此,调用 clear() 之后,原来指向该列表的所有变量和引用都将反映出列表已被清空的状态。
与 clear() 方法类似,但效果不同的是 del 语句。使用 del 语句可以删除整个列表对象:
# 删除整个列表对象
del my_list# 尝试访问已删除的列表会引发错误
# print(my_list) # NameError: name 'my_list' is not defined
在这种情况下,my_list 这个变量名将不再存在,而不是仅仅其引用的列表内容被清空。如果尝试访问已删除的变量,将会引发 NameError。
2.4 copy()函数
在Python中,list的copy()方法用于创建列表的一个浅拷贝(shallow copy)。这意味着新列表是原始列表的一个新实例,但它包含的元素仍然是原始列表中元素的引用,而不是新创建的对象。
这里是如何使用copy()方法的示例:
# 创建一个原始列表
original_list = [1, 2, 3, [4, 5]]# 使用copy()方法创建列表的拷贝
copied_list = original_list.copy()# 打印原始列表和拷贝的列表
print("Original list:", original_list)
print("Copied list:", copied_list)# 修改原始列表中的一个元素
original_list[0] = 100# 打印修改后的原始列表和拷贝的列表
print("Modified original list:", original_list)
print("Copied list after modification of original:", copied_list)# 修改原始列表中的一个嵌套列表
original_list[3][0] = 400# 打印修改后的原始列表和拷贝的列表
print("Modified original list with nested list change:", original_list)
print("Copied list after modification of nested list in original:", copied_list)
输出结果将会显示,尽管我们修改了原始列表中的元素和嵌套列表,但拷贝的列表并没有受到这些修改的影响。这是因为copy()创建了原始列表的一个新实例,但内部元素仍然是原始元素的引用。
需要注意的是,如果列表包含可变对象(如列表、字典等),那么对原始列表中的这些对象的修改也会反映在拷贝的列表中,因为拷贝的列表包含的是对这些对象的引用,而不是对象的新副本。这被称为浅拷贝。如果你希望创建一个完全独立的副本,包括内部对象的新副本,那么你需要使用深拷贝(deep copy),可以使用copy模块的deepcopy()函数来实现。
import copy# 创建一个原始列表
original_list = [1, 2, 3, [4, 5]]# 使用deepcopy()方法创建列表的深拷贝
deep_copied_list = copy.deepcopy(original_list)# 修改原始列表中的嵌套列表
original_list[3][0] = 400# 打印原始列表和深拷贝的列表
print("Original list with nested list change:", original_list)
print("Deep copied list after modification of nested list in original:", deep_copied_list)
在这个例子中,即使我们修改了原始列表中的嵌套列表,深拷贝的列表也没有受到影响,因为它包含了原始内部对象的新副本。
2.5 count()函数
在Python中,list 类型有一个 count() 方法,用于统计列表中某个元素出现的次数。这个方法接受一个参数,即要统计的元素,并返回该元素在列表中出现的次数。
下面是一个使用 count() 方法的例子:
# 创建一个包含元素的列表
my_list = [1, 2, 3, 2, 2, 4, 5, 2]# 统计元素2在列表中出现的次数
count_of_two = my_list.count(2)# 打印结果
print("The count of 2 in the list is:", count_of_two) # 输出: The count of 2 in the list is: 4
在这个例子中,my_list 包含8个元素,其中元素2出现了4次。调用 my_list.count(2) 返回了4,即元素2在列表中出现的次数。
count() 方法只会统计列表中直接包含的元素,不会递归地检查嵌套的对象(如列表中的列表)。如果列表中包含嵌套列表,并且你想要统计某个元素在整个嵌套列表结构中出现的次数,你需要实现一个递归函数来遍历所有嵌套列表。
需要注意的是,count() 方法对于列表中的元素进行直接比较,因此如果列表中的元素是不可哈希的类型(如列表或字典),那么它们不能被用作 count() 方法的参数,因为这样的元素不能出现在哈希表中,而 count() 方法需要利用哈希表来快速查找元素。
此外,count() 方法的时间复杂度通常是O(n),其中n是列表的长度,因为它需要遍历整个列表来统计元素的出现次数。
2.6 del
在Python中,del语句可以用来删除列表中的元素或整个列表。当你想删除列表中的某个元素时,你可以使用del语句并指定该元素的索引。如果你想删除整个列表,你可以使用del语句并指定列表的变量名。
下面是使用del语句删除列表元素的例子:
# 创建一个包含元素的列表
my_list = [1, 2, 3, 4, 5]# 打印原始列表
print("Original list:", my_list) # 输出: Original list: [1, 2, 3, 4, 5]# 使用del语句删除索引为2的元素(即数字3)
del my_list[2]# 打印删除元素后的列表
print("List after deleting element at index 2:", my_list) # 输出: List after deleting element at index 2: [1, 2, 4, 5]
在这个例子中,del my_list[2]删除了my_list中索引为2的元素,即数字3。
如果你想删除整个列表,可以这样做:
# 创建一个包含元素的列表
my_list = [1, 2, 3, 4, 5]# 打印原始列表
print("Original list:", my_list) # 输出: Original list: [1, 2, 3, 4, 5]# 使用del语句删除整个列表
del my_list# 尝试访问已删除的列表会引发错误
# print(my_list) # NameError: name 'my_list' is not defined
在这个例子中,del my_list删除了整个列表对象,包括其变量名my_list。此后,尝试访问my_list将会导致NameError,因为该变量已经不存在了。
请注意,使用del语句删除列表元素或整个列表时,必须确保你正在删除的是正确的元素或列表,因为删除操作是不可逆的。如果你想保留原始列表并创建一个没有特定元素的新列表,你应该使用list.remove(element)方法(用于删除第一个匹配的元素)或list.copy()与列表推导式(用于创建新列表,不包含某些元素)。
2.7 enumerate()函数
在Python中,enumerate()是一个内置函数,它用于遍历一个可迭代对象(如列表、元组或字符串)的元素,并同时返回每个元素的索引和值。这对于在循环中同时需要索引和元素值的情况非常有用。
enumerate()函数的基本语法是:
enumerate(iterable, start=0)
其中,iterable是一个可迭代对象,start是一个可选参数,表示计数开始的索引值,默认为0。
下面是一个使用enumerate()函数的例子,它遍历一个列表并打印出每个元素的索引和值:
# 创建一个列表
my_list = ['apple', 'banana', 'cherry']# 使用enumerate()遍历列表
for index, value in enumerate(my_list):print(f"Index: {index}, Value: {value}")
输出结果将会是:
Index: 0, Value: apple
Index: 1, Value: banana
Index: 2, Value: cherry
在上面的例子中,enumerate(my_list)返回一个枚举对象,该对象在每次迭代时产生一个包含索引和值的元组。for循环则解包这个元组,将索引赋值给index变量,将值赋值给value变量。
通过enumerate()函数,你可以方便地在循环中同时获取到元素的索引和值,而不需要使用额外的计数器或索引变量。
2.8 extend()函数
在Python中,list.extend()是一个方法,用于将一个可迭代对象(如列表、元组或字符串)的元素添加到现有列表的末尾。与list.append()方法不同,extend()会将可迭代对象中的每个元素单独添加到列表中,而不是将整个可迭代对象作为单个元素添加。
以下是list.extend()方法的语法:
list.extend(iterable)
其中,iterable是一个可迭代对象,可以是列表、元组、字符串等。
下面是一个使用extend()方法的例子:
# 创建一个列表
my_list = [1, 2, 3]# 创建另一个可迭代对象
another_list = [4, 5, 6]# 使用extend()将another_list的元素添加到my_list中
my_list.extend(another_list)# 打印修改后的列表
print(my_list) # 输出: [1, 2, 3, 4, 5, 6]
在这个例子中,extend()方法将another_list中的每个元素(4、5、6)添加到my_list的末尾。
如果尝试使用append()方法将another_list添加到my_list,结果将会有所不同:
# 使用append()将another_list作为一个元素添加到my_list中
my_list.append(another_list)# 打印修改后的列表
print(my_list) # 输出: [1, 2, 3, [4, 5, 6]]
在这个例子中,append()方法将整个another_list作为一个元素添加到了my_list的末尾,而不是将another_list中的元素添加到my_list中。
extend()方法在处理列表合并时非常有用,因为它可以简洁地将多个列表的元素合并到一个列表中。
2.9 index()函数
在Python中,list.index()是一个列表方法,用于查找列表中某个元素的第一个匹配项的索引。如果元素存在于列表中,index()方法返回该元素的最低索引(即它首次出现的位置)。如果元素不在列表中,index()方法将引发一个ValueError异常。
以下是list.index()方法的基本语法:
list.index(value, [start, [stop]])
- value:需要查找的元素值。
- start(可选):开始搜索的索引位置。如果指定了该参数,搜索将从该索引开始,直到列表的末尾。
- stop(可选):停止搜索的索引位置。搜索将在该索引之前结束。
下面是一个使用index()方法的例子:
# 创建一个列表
my_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']# 使用index()查找'cherry'的索引
cherry_index = my_list.index('cherry')# 打印结果
print(f"The index of 'cherry' is: {cherry_index}") # 输出: The index of 'cherry' is: 2# 尝试查找不存在的元素
try:nonexistent_index = my_list.index('fig')
except ValueError as e:print(f"An error occurred: {e}") # 输出: An error occurred: 'fig' is not in list
在上面的例子中,my_list.index(‘cherry’)返回2,因为’cherry’是列表中第三个元素(索引从0开始)。当我们尝试查找一个不存在的元素(如’fig’)时,index()方法会抛出一个ValueError异常,因此我们需要使用try和except块来捕获并处理这个异常。
如果你想从列表的特定部分开始搜索,你可以使用start和stop参数。例如,要查找从索引1开始到索引4(不包括4)的元素’banana’的索引,你可以这样做:
banana_index = my_list.index('banana', 1, 4)
print(f"The index of 'banana' between indices 1 and 4 (exclusive) is: {banana_index}") # 输出: The index of 'banana' between indices 1 and 4 (exclusive) is: 1
在这个例子中,尽管’banana’实际上在索引0的位置,但由于我们指定了搜索范围,所以返回的是在该范围内的第一个匹配项的索引。
相关文章:
列表(list)篇(一)
文章目录 2.1 创建列表2.2 append()函数2.3 clear()函数2.4 copy()函数2.5 count()函数2.6 del2.7 enumerate()函数2.8 extend()函数2.9 index()函数 2.1 创建列表 在Python中,列表(list)是一种基础的数据结构,可以包含不同类型的…...

spring整合Sentinel
安装sentinel: 执行命令; java -jar sentinel-dashboard-1.8.6.jar 注:sentinel的默认端口为8080,容易出现tomcat的冲突。 当端口冲突,可以使用该指令修改sentinel的端口 默认账号和密码都为sentinel Springcloud整合sentinel:…...
MFC 自定义分发消息方法
重点: 1.创建一个专门自定义消息的头文件 constValue.h #define WM_MY_CUSTOM_MESSAGE (WM_USER 101) // 自定义消息ID 2.在你需要发送和接收该消息的类中,首先注册这个自定义消息。一般在窗口类(如CWnd派生类)的OnInitDialog…...
FPGA的应用方向
文章目录 FPGA是什么?FPGA的发展FPGA有哪些公司国内的FPGA发展如何?国内FPGA应用情况怎样?FPGA的发展方向有哪些?FPGA在工业界的应用有哪些?FPGA在科研界的方向有哪些?FPGA在高频信号处理的应用场景FPGA应用…...

河南大学大数据平台技术实验报告二
大数据平台技术课程实验报告 实验二:HDFS操作实践 姓名:杨馥瑞 学号:2212080042 专业:数据科学与大数据技术 年级:2022级 主讲教师:林英豪 实验时间:2024年3月15日3点 至 2024年3月15日4点40 …...

Spring Cloud Gateway如何实现熔断
Spring Cloud Gateway熔断集成 熔断应用: 金融市场中的熔断机制:在金融交易系统中,熔断机制(Circuit Breaker)是一种市场保护措施,旨在预防市场剧烈波动时可能导致的系统性风险。当某个基准指数(…...
2403d,d的com哪里错了
原文 感谢任意见解.细节: >dmd --version DMD64 D Compiler v2.107.0参考: ComObject类 IUnknown接口 我只使用了ComObject类和隐式继承了IUnknown接口,用用ImportC编译并包含以下内容的comheaders.c编写了一些COM测试代码. #define WINVER 0x0A00 #define _WIN32_WINNT…...
LeetCode151:反转字符串中的单词
题目描述 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空…...

Linux入门-常见指令及权限理解
目录 1、Linux背景 1.1、发展历史 1.2、开源 1.3Linux企业应用现状 2、Linux下的基本命令 2.1、ls 指令 2.2、pwd 命令 2.3、cd 命令 2.4、touch命令 2.5、mkdir 命令 2.6、rmdir 指令和 rm指令 2.7 man 指令 2.8、cp指令 2.9、mv 指令 2.10 cat 2.11 more 2…...
找工作的经验总结一——渠道与简历
关于简历与面试的经验总结,也可以说是关于找工作的方法论。 这里我们用第一性原理的方法论来分析找工作这件事。 首先,我们的目的是什么? 当然是找工作,不论你是大学刚毕业,还是创业失败,或者是在家闲着…...

第 126 场 LeetCode 双周赛题解
A 求出加密整数的和 模拟 class Solution { public:int sumOfEncryptedInt(vector<int> &nums) {int res 0;for (auto x: nums) {string s to_string(x);char ch *max_element(s.begin(), s.end());for (auto &c: s)c ch;res stoi(s);}return res;} };B 执行…...

固态浸压计
Solid State Dip Meter(固态浸没仪/固态浸压计) 是真空管栅极浸入式仪表的固态半导体版本。它是一种用于测量 LC 电路谐振频率的仪器。LC 电路是由电感 (L) 和电容 (C) 组成的电路。当电感的感抗与电容的容抗相互抵消时,这些元件可以谐振于特定频率。 固态浸入式仪…...

Ubuntu上搭建TFTP服务
Ubuntu上搭建TFTP服务 TFTP服务简介搭建TFTP服务安装TFTP服务修改配置文件 重启服务 TFTP服务简介 TFTP是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适用于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计,只…...

SpringBoot3框架,事件和监听器、SPI
事件和监听器 生命周期监听 自定义监听器的步骤: 编写SpringApplicationRunListener实现类(各个实现方法的功能写在其sout内) public class MyAppListener implements SpringApplicationRunListener {Overridepublic void starting(Configu…...

sadtalker-api/
———— 下载sadtalker工程文件,包括844个模型 。。。。。。。。。。。。。。。。 配置环境: pip源,设置: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple anaconda prompt, 进入命令行 how在 …...
vue+elementUI实现指定列的单元格可编辑
template中的代码如下: <div v-if"(item.label 高压侧 || item.label 低压侧)&&coloumnHeader.label 单柱片数"><div class"editableCell"><div v-if"item.label 高压侧" dblclick"changeValue(sco…...

RK3568平台开发系列讲解(基础篇)内核是如何发送事件到用户空间
🚀返回专栏总目录 文章目录 一、相关接口函数二、udevadm 命令三、实验沉淀、分享、成长,让自己和他人都能有所收获!😄 一、相关接口函数 kobject_uevent 是 Linux 内核中的一个函数, 用于生成和发送 uevent 事件。 它是 udev 和其他设备管理工具与内核通信的一种方式。…...

力扣---打家劫舍---动态规划
思路 1: 我将res[i]定义为:一定要取第 i 个房子的前提下,能获取的最大金额。那么直接用cnt从头记录到尾,每个房子的res最大值即是答案。那么递推公式是什么?res[i]max(res[i-2],res[i-1],...,res[0])nums[i]。数组初始…...
mac安装rust环境
mac安装rust环境 老规矩官方文档 1. mac官网使用的是脚本安装, 至于为啥没使用brew也没推荐俺也不太清楚 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh2. 一般来说中途会遇见有一个选择我这里选择直接回车默认安装(如果以后我研究明白的话会进行更新, 现在是…...

1058:求一元二次方程
【题目描述】 利用公式 求一元二次方程axbxc0的根,其中a不等于0。结果要求精确到小数点后5位。 【输入】 输入一行,包含三个浮点数a,b,c(它们之间以一个空格分开),分别表示方程axbxc0的系数。 【输出】 输出一行&…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...