【Python】序列与列表(列表元素的增删改查,求之,列表推导式、列表的拷贝)
一、序列
序列的概念:按照某种顺序排列的数据类型就叫做序列,比如字符串,列表,元组,集合
序列的共同点是都有下标,支持index()方法和count(),也支持切片处理(等同于字符串序列的切片处理)
l1 = [0, 1, 1, 2, 3, 4, 2, 4, 5]
print(l1.index(1))
print(l1.count(1))
print(l1[:3][::-1])
print(l1[::2])
二、列表(可变类型)
列表 表达符号使用中括号 [] 里面可以是数字,字符串,布尔类型,列表,元组,字典,集合...
# 定义空列表new_empty_list = list()
print(empty_list, new_empty_list)
列表是一个有序,并且元素可以重复的和可变动的元素类型
list1 = ['Apple', 'Orange', 'Grape']
list2 = ['Orange', 'Apple', 'Grape']
if list1 == list2:print("{}和{}相等".format(list1, list2))
else:print("{}和{}不相等".format(list1, list2))
1、列表元素的删除
pop方法
pop方法可以进行删除列表中的元素,默认删除最后一个索引位置的元素,删除并同时可以返回此元素,也可以指定下标索引去删除
list1 = ['Apple', 'Orange', 'Grape']print(list1.pop())
print(list1)
print(list1.pop(0))
print(list1)
remove()方法
remove()方法是指定元素去删除;
list1 = ['Apple', 'Orange', 'Grape','Durian']list1.remove('Durian')
print(list1)
del
也可以通过指定对应的下标元素值去删除 也可以针对变量进行删除 删除后就会报变量未定NameError: name 'xxxx' is not defined
list1 = ['Apple', 'Orange', 'Grape','Durian']del list1[1]
print(list1)
clear()方法
clear()方法是清空列表;
list1 = ['Apple', 'Orange', 'Grape','Durian']list1.clear()
print(list1)
2、列表元素的增加
1、append()方法
默认是添加元素到列表的末尾;
list1 = ['Apple', 'Orange', 'Grape']list1.append('Pear')
print(list1)
2、insert()方法 指定索引位置,在索引前面一个位置插入
list1 = ['Apple', 'Orange', 'Grape']list1.insert(1, 'Cherry')
print(list1)
3、extend()方法 是可以跟其他序列进行拼接 相当于+拼接
list1 = ['Apple', 'Orange', 'Grape']list3 = ['watermelon']
string1 = 'test'
list1.extend(list3)
print(list1)
print(list1 + list3)
# 字符串如果被使用这个extend方法添加到列表中,则先会把字符串拆分成列表,然后添加进去
list1 = ['Apple', 'Orange', 'Grape']list1.extend(string1)
print(list1)
3、列表元素的获取
list1 = ['Apple', 'Orange', 'Grape']
list2 = ['Orange', 'Apple', 'Grape']print(list1[-1], list1[2])
列表长度的获取
num_list = [1, 2, 3, 4, 5,]
print(len(num_list))
有几个元素,列表长度就为几
4、列表元素的修改
list2 = ['Orange', 'Apple', 'Grape']list1[2] = 'Durian'
print(list1)
5、列表元素的排序
sort()方法
sort()方法可以实现对列表元素进行排序 按照默认的由低到高的顺序排序;
num_list = [2, 1, 6, 3, 7, 9]
num_list.sort()
print(num_list)alpha_list = ['b', 'd', 'w', 'x', 'a', 'c']
alpha_list.sort()
print(alpha_list)


# # sort()方法的reverse参数可以实现反向输出,默认不加的话就是reverse=False(也就是关闭了反向输出),如果需要指定则照如下方式使用
num_list = [2, 1, 6, 3, 7, 9]
num_list.sort()
print(num_list)num_list.sort(reverse=True)
print(num_list)
reverse()方法
reverse()方法可以实现将列表元素反向输出;
num_list = [2, 1, 6, 3, 7, 9]num_list.reverse()
print(num_list)
总结:列表元素的反向输出有三种办法
list1 = ['Apple', 'Orange', 'Grape']
list2 = ['Orange', 'Apple', 'Grape']
num_list = [2, 1, 6, 3, 7, 9]# 1) 列表切片实现
print(num_list[::-1])
# 2) reverse()方法
print(list2)
list2.reverse()
print(list2)
# 3) reversed()内置函数 返回序列给定的值的一个反向的迭代器 如果需要输出对应的数据类型 则需要使用对应的数方法进行转化
print(list(reversed(list2)))
6、列表元素的去重
not in
对num_list进行去重;
num_list = [1, 2, 3, 4, 5, 5, 4, 3]
empty_list = []
for i in num_list:if i not in empty_list:empty_list.append(i)
print(empty_list)7、 列表元素的求值
列表元素的求和
digit_list = [3, 4, 5, 6]# 1) for循环求和
for_total = 0
for i in digit_list:for_total += i
print(for_total)digit_list = [3, 4, 5, 6]# 2) while循环求和
while_total = 0
i = 0
while i < len(digit_list):while_total += digit_list[i]i += 1
print(while_total)# 3) 使用sum函数实现
print(sum(digit_list))列表元素的最大值,最小值
# 求列表最大值 求平均值的 求最小值的digit_list = [3, 4, 5, 6]
print(max(digit_list))
print(min(digit_list))
列表元素的平均值
# 1) statistics module,其中包含一个内置函数来计算数字的平均值或平均值statistics.mean() functio用于计算输入值或数据集的平均值/平均值。
digit_list = [3, 4, 5, 6]from statistics import mean
print(mean(digit_list))
# 2) 先求和再求平均值
digit_list = [3, 4, 5, 6]print(sum(digit_list) / len(digit_list))
# 3) NumPy 模块有一个内置函数来计算数据集或列表中存在的数据项的平均值/平均值。
digit_list = [3, 4, 5, 6]import numpy
print(numpy.average(digit_list))8、 列表推导式/列表生成式

# 使用普通for循环创建一个1-10的一个列表
slist = []
for i in range(1,11):slist.append(i)
print(slist)
# 列表推导式语法:[exp1 for x in data if condition]
print([x*x for x in range(1, 11)])
print(sum([i for i in range(1,11)]))
9、列表的拷贝
浅拷贝
# 浅拷贝 深拷贝 针对可变序列 面试重点知识 需要记忆
"""
copy()方法是浅拷贝(shallow copy) 如果一个可变序列是多层次嵌套的值,则浅拷贝因为是浅层次的拷贝,所以拷贝后的对象浅层次的值不会随着之前的源对象
值改变而改变,而深层次的嵌套的值因为浅拷贝无法拷贝过去,也就是说拷贝的是源数据的一个引用,因此如果我们修改浅层次的数据,源数据不会更改,深层次数据
修改后,源数据也会修改 可以理解为深层次的数据是做了个软链接
"""
list3 = [1, 2, 3, ['a', 'b', 'c'], 5]
list4 = list3.copy()
print(id(list3), id(list4))
list4[0] = 0
list4[-2][0] = 'a1'
print(list3)
print(list4)
浅拷贝,不是完整的拷贝,他只能拷贝第一层的元素;
如果你是多层列表的话,他只能拷贝第一层元素,第二层元素他并没有拷贝,相当于做了一个引用,并不是真的拷贝走了,所以你在修改浅拷贝列表的第二层元素的时候,相当于在原列表上修改了;
# 这里发现浅拷贝深层次的子列表对象的内存地址值id是完全一样的 说明深层次只是做了个引用 无法实现创建新对象
print(id(list3[-2]))
print(id(list4[-2]))
深拷贝
list5 = deepcopy(list3)
print(list5)
list5[0] = 9
list5[3][1] = 'bag'
print(list3)
print(list5)
深拷贝,他就是完整的拷贝;
如果是多层列表的话,就拷贝走了整个列表,相当于创建了一个新的完整的的列表,所以你在新的列表上进行修改,是不会影响到原列表的;
# 这里发现深拷贝的深层次的子列表对象的内存地址值id是完全不一样的 说明实现创建了新对象
print(id(list3[-2]))
print(id(list5[-2]))
相关文章:
【Python】序列与列表(列表元素的增删改查,求之,列表推导式、列表的拷贝)
一、序列序列的概念:按照某种顺序排列的数据类型就叫做序列,比如字符串,列表,元组,集合序列的共同点是都有下标,支持index()方法和count(),也支持切片处理(等同于字符串序列的切片处理)l1 [0, …...
update导致死锁
update delete 操作,如果走的索引,对索引和主键索引加行锁 如果没有走索引,锁整张表。 不开启事务,mysql本身也会加锁 一般MYSQL在执行CREATE,ALTER,INSERT等命令时会自动加锁 在对数据进行更新操作时 如果update没用到索引&…...
Java 集合 --- 如何遍历Map
Java 集合 --- 如何遍历MapMap的基本操作如何遍历MapType of HashMapMap没有继承Collection接口AbstractMap和AbstractCollection是平级关系 Map的基本操作 package map; import java.util.*; /*** This program demonstrates the use of a map with key type String and val…...
C#从值类型、引用类型到装箱和拆箱
上一篇文章讲了C#的值类型和引用类型,这里再来看看值类型和引用类型最直接的使用场景:装箱和拆箱。 一、基本概念 装箱:值类型转化为引用类型的过程。从托管堆中为新生成的引用类型对象分配内存,再把值类型的实例字段拷贝到托管堆上新对象的…...
Java中的逻辑运算符/移位运算符简单总结
前段时间刷到了力扣关于位运算的题,这里浅浅记录一下! 1. 逻辑位运算 1.1 与 & &:按位与进行二进制计算,规则是同为1则为1,不同为0,具体如下: 0&00, 0&10, 1&00, 1&…...
活动预告 | GAIDC 全球人工智能开发者先锋大会
大会主题——“向光而行的 AI 开发者” 2023 全球人工智能开发者先锋大会(GAIDC) 由世界人工智能大会组委会、上海市经济和信息化委员会、上海市人才工作领导小组办公室及中国(上海)自由贸易试验区临港新片区管理委员会指导&…...
【Linux系统】认识操作系统和操作系统如何进行管理以及进程相关状态
进程概念1 认识冯诺依曼体系结构1.1 冯诺依曼体系结构存储器的作用2 操作系统(Operator System,OS)2.1 OS如何进行管理3 进程3.1 OS管理进程:先描述再组织3.2 描述进程-PCB3.3 查看进程3.4 通过系统调用获取进程标识符3.5 通过系统调用创建子进程——for…...
【0基础学爬虫】爬虫基础之HTTP协议的基本原理介绍
大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学…...
SpringBoot 整合定时任务
注解概览 EnableScheduling 在配置类上使用,开启计划任务的支持(类上) Scheduled 来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持) pom依赖 <parent…...
我的零分周赛:CSDN周赛第30期,成绩“0”分,天然气定单、小艺读书、买苹果、圆桌
CSDN周赛第30期,成绩“0”分,天然气定单、小艺读书、买苹果🍎、圆桌。 (本文获得CSDN质量评分【91】)【学习的细节是欢悦的历程】Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教…...
二、Java虚拟机的基本结构
Java虚拟机的架构1.内存结果概述2.类加载器子系统的作用3. 类加载器ClassLoader角色4.类的加载过程5.类加载器的分类1.引导类加载器(虚拟机自带的加载器)Bootstrap ClassLoader2.扩展类加载器(虚拟机自带的加载器) Extenssion ClassLoader3.应用程序类加载器(虚拟机自带的加载器…...
华为OD机试 - 用户调度(Python) | 机试题+算法思路+考点+代码解析 【2023】
用户调度 题目 在通信系统中有一个常见的问题是对用户进行不同策略的调度,会得到不同系统消耗的性能。 假设由N个待串行用户,每个用户可以使用A/B/C三种不同的调度策略。 不同的策略会消耗不同的系统资源,请你根据如下规则进行用户调度,并返回总的消耗资源数。 规则是: …...
HashMap(JDK1.8)源码+底层数据结构分析
HashMap 简介底层数据结构分析 JDK1.8 之前JDK1.8 之后 HashMap 源码分析 构造方法put 方法get 方法resize 方法 HashMap 常用方法测试 感谢 changfubai 对本文的改进做出的贡献! HashMap 简介 HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现…...
case的使用
1.x和z值 1.1.定义 x:表示不定值 z:表示高阻态,还有一种表达方式“?” 一个x/z可以用来定义十六进制(h)数的4位二进制的状态,八进制(o)数的3位,二进制&#x…...
Mac配置ITerm2
Mac配置ITerm2 install-shell-integration配置lrzsz配置zsh安装Oh-My-Zsh修改皮肤文件加载皮肤添加插件配置profiles 1.expect配置文件2.shell脚本 iterm2顶部白条闪烁 install-shell-integration 安装完成之后会有一个指示标,需要弄掉Preferences > Profiles …...
JUC并发编程(下)
✨作者:猫十二懿 ❤️🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 学习地址 写在最前 JUC并发编程(上) JUC(Java Util Concurrent)学习内容框架&…...
API接口的基础知识
API是应用程序编程接口(Application Programming Interface)的缩写,能够起到两个软件组件之间的连接器或中介的作用。此类接口往往通过一组明确的协议,来表示各种原始的请求和响应。API文档可以向开发人员展示请求和响应是如何形成…...
基于Spring Boot的教务管理系统
文章目录项目介绍主要功能截图:登录首页学生信息管理班级信息管理教师信息管理教师评价部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题…...
网页扫描图像并以pdf格式上传到服务器端
本文描述如何通过网页驱动扫描仪、高拍仪等图像扫描设备进行图像扫描,扫描结果经编辑修改后以pdf压缩格式上传到后台java程序中进行服务器端落盘保存。图像扫描上传如文字描述顺序所介绍,先要驱动扫描设备工作,进行纸张数据的光学扫描操作形成…...
Airbyte入门
Airbyte 后端技术栈Java 17框架:JerseyAPI: OAS3数据库:PostgreSQL单元和E2E测试:JUnit 5编排:Temporal连接器技术栈连接器可以用任何语言编写。但是,最常见的语言是:Python3.9.0Java 17前端技术…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...
GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...
mcts蒙特卡洛模拟树思想
您这个观察非常敏锐,而且在很大程度上是正确的!您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些,您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”,这个观察非…...
