当前位置: 首页 > news >正文

零基础学 Python合集--1:list列表-持续更新

列表对象自带方法

  • append(element):在列表末尾添加单个元素。

  • remove(value):删除列表中第一个值与参数相同的元素。

  • extend(iterable):将另一个可迭代对象(如列表)中的元素逐个添加到原列表末尾。

  • sort(key=None, reverse=False):对列表进行原地排序,默认升序;reverse=True时降序;返回值是None

  • clear():清空列表中的所有元素,列表变为空列表[]

  • copy():创建列表的浅拷贝(等价于list[:]),返回一个新列表,但内部元素仍是原对象的引用。

切片操作

  • list[start:end:step]:通过索引区间获取子列表,遵循左闭右开原则(包含start,不包含end)。

  • 多维列表中的切片如list[:2]取前两行,row[:2]取每行的前两个元素。

  • 全切片[:,:]在 NumPy 数组中使用,表示取所有行和所有列(纯列表不支持此写法)。

copy模块(拷贝操作)

  • copy.copy(obj):浅拷贝。新列表与原列表是不同的对象,但内部的子对象(如嵌套列表)仍共用同一内存地址,修改子对象会互相影响。

  • copy.deepcopy(obj):深拷贝。递归复制所有层级的对象,新列表与原列表完全独立,修改任意元素均不影响原对象。

NumPy 库相关函数

  • np.array(list):将 Python 多维列表转换为 NumPy 多维数组。

  • array.shape:返回数组各维度的大小(元组形式)。

  • np.ndim(array):返回数组的维度数(例如二维数组返回2)。

#create list mylist = [] print(f"原始list内容:{mylist}") #添加元素 mylist.append(1) mylist.append(123) print(f"添加元素后的list内容:{mylist}") #访问元素 print(f"访问list中的第一个元素:{mylist[0]}") print(f"访问list中的第二个元素:{mylist[1]}") #修改元素 mylist[1] = 123456 print(f"修改元素后的list内容:{mylist}") #删除元素 mylist.remove(1) # 删除值为1的元素 print(f"删除元素后的list内容:{mylist}") #列表中添加列表mylist2的内容 mylist2 = [996,908,432,101] mylist.extend(mylist2)#extend方法是将mylist2中的元素逐个添加到mylist中 print(f"添加mylist2内容后的list内容:{mylist}") #列表内容排序 mylist3 = mylist.sort()#默认升序排序,赋值给mylist3后mylist3的值为None,因为sort()方法是就地排序,不返回新的列表 print(f"升序排序后的list内容:{mylist},mylist3:{mylist3}") #按降序排序 mylist.sort(reverse=True)#reverse参数为True时,按降序排序 print(f"降序排序后的list内容:{mylist}") #列表切片 #举例,只取第3-5个元素 sliced_list = mylist[3:6]#切片操作,mylist[3:6]表示从索引3开始(包含索引3),到索引6结束(不包含索引6),即取第3、4、5个元素,左闭右开区间 print(f"切片后的list内容:{sliced_list}") #列表长度 len_mylist = len(mylist) print(f"list的长度:{len_mylist}") #列表清空 mylist.clear()#将列表中的所有元素删除,但列表对象仍然存在,mylist仍然是一个空列表[] print(f"清空后的list内容:{mylist}") #列表复制 copy_mylist = mylist.copy()#copy方法创建一个新的列表对象,并将mylist中的元素复制到新的列表中,copy_mylist和mylist是两个不同的列表对象 print(f"复制后的list内容:{copy_mylist}") #深拷贝和浅拷贝的区别 import copy #举例 ori_list = [1, 2, [3, 4]] #浅拷贝就是创建一个新的列表对象,但其中的元素仍然是原来列表中的元素的引用,即新列表中的元素和原列表中的元素指向同一个对象,修改新列表中的元素会影响原列表中的元素 qian_copy_ori_list = copy.copy(ori_list) #打印浅拷贝的qian_copy_ori_list和原列表ori_list print(f"浅拷贝后的列表内容:{qian_copy_ori_list},原列表内容:{ori_list}") #现在修改浅拷贝列表中的元素,看看是否会影响原列表 qian_copy_ori_list[2][0] = 999 print(f"修改浅拷贝列表后的内容:{qian_copy_ori_list},原列表内容:{ori_list}") #可以看到,修改浅拷贝列表中的元素后,原列表中的元素也被修改了,因为浅拷贝只是复制了列表对象,但其中的元素仍然是原来列表中的元素的引用,所以修改新列表中的元素会影响原列表中的元素。 #所以浅拷贝在实际应用中,建议只在列表中没有嵌套列表或者其他可变对象时使用,否则可能会导致意外错误。 #copy常用的函数主要是以下内容:1.浅拷贝:copy.copy(),2.深拷贝:copy.deepcopy() #深拷贝 deep_copy_ori_list = copy.deepcopy(ori_list) #深拷贝是完全复制了原列表中的元素,不管是基本数据类型还是复杂数据类型,都会创建一个新的对象,所以修改深拷贝列表中的元素不会影响原列表中的元素。 #打印深拷贝的deep_copy_ori_list和原列表ori_list print(f"深拷贝后的列表内容:{deep_copy_ori_list},原列表内容:{ori_list}") #现在修改深拷贝列表中的元素,看看是否会影响原列表 deep_copy_ori_list[2][0] = 888 print(f"修改深拷贝列表后的内容:{deep_copy_ori_list},原列表内容:{ori_list}") deep_copy_ori_list[0] =666 print(f"修改深拷贝列表中的基本数据类型元素后的内容:{deep_copy_ori_list},原列表内容:{ori_list}") #可以看到,修改深拷贝列表中的元素后,原列表中的元素没有被修改,因为深拷贝完全复制了原列表中的元素,不管是基本数据类型还是复杂数据类型,都会创建一个新的对象,所以修改新列表中的元素不会影响原列表中的元素。 #所以深拷贝在实际应用中,建议在列表中有嵌套列表或者其他可变对象时使用,以避免意外错误。 #一般在实际应用中,浅拷贝远多于深拷贝,因为默认浅拷贝共享内存,极致提速省内存,但是要改数据、保原数据 → 请使用深拷贝 #多维列表的操作,多维列表就是列表嵌套列表,可以看作是一个矩阵或者表格,常见的操作有以下内容: #1.创建多维列表 multi_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]#这是一个二维列表,包含三个元素,每个元素都是一个列表 """最外层:一整个大列表 → 第 1 维 里面每一个元素还是列表 → 第 2 维 ,[[[[[几个方括号就是几维度,[[[[[[就是6维""" #可以直接打印列表的形状和维度 import numpy as np #numpy库是python中常用的科学计算库,提供了多维数组对象和各种操作多维数组的函数,可以方便地处理多维列表。 shape_multi_list = np.array(multi_list).shape#将多维列表转换为numpy数组,然后获取其形状 print(f"多维列表的形状:{shape_multi_list}")#多维列表的形状:(3, 3) #打印维度 print(f"多维列表的维度:{np.ndim(multi_list)}")#多维列表的维度:2 #打印np.array(multi_list)的内容 print(f"将多维列表转换为numpy数组后的内容:\n{np.array(multi_list)}")#将多维列表转换为numpy数组后的内容:[[1 2 3] [4 5 6] [7 8 9]] #打印np.array(multi_list).shape[0]的内容 print(f"将多维列表转换为numpy数组后的第一行内容:\n{np.array(multi_list).shape[0]}")#将多维列表转换为numpy数组后的第一行内容:[1 2 3] #2.访问多维列表中的元素 #打印第一维的所有元素 for i in range(np.array(multi_list).shape[0]): print(f"第一维的每一个元素:{multi_list[i]}") #打印第二维的所有元素 for i in range(np.array(multi_list).shape[0]):#第一维度,本示例第一维有3个列表元素 for j in range(np.array(multi_list).shape[1]): print(f"第二维的第一个元素:{multi_list[i][j]}")#访问多维列表中的元素,multi_list[i][j]表示访问第一维的第i个元素中的第二维的第j个元素 #列表中的 [:,:] 用法 test_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] #使用切片操作访问多维列表中的元素,[:,:]表示访问所有行和所有列,即访问整个多维列表 #使用切片操作访问多维列表中的元素,只访问第一行和第二行中每一行的前两个元素,即1 2 和4 5 ,第三行不访问 for row in test_list[:2]: print(f"row:{row}")#访问多维列表中的元素,test_list[:2]表示访问第一行和第二行,即访问前两行的所有元素 print(f"row:{row[:2]}")
http://www.zskr.cn/news/1416201.html

相关文章:

  • 【AVRCP】规范精讲[18]: 从字节到交互,全流程拆解AVRCP命令与响应实战
  • 2026最新【四六级历年真题2017-2025.12】分享
  • 解密浏览器Cookie本地导出:Get cookies.txt LOCALLY实战指南
  • Python进阶 面向对象基础
  • Path of Building PoE2终极指南:流放之路2最强构建规划工具完全教程
  • 【 linux 】认识make和makefile
  • FastbootEnhance:告别复杂命令行,Windows上最直观的Android设备管理工具
  • 别再纠结了!RTL8367系列五款千兆交换机芯片怎么选?一张图帮你搞定(附硬件开发包获取)
  • 大数定律:只要时间足够长,离谱的事情一定会发生
  • 2000-2024年 县域年末金融机构贷款余额、金融机构储蓄存款余额数据 xlsx
  • 手把手教你学Simulink——电动汽车V2G(车网互动)双向DC-AC充电逆变器建模
  • 终极指南:如何用SleeperX彻底掌控Mac睡眠行为
  • Ant Design Pro v6.0.2 发布:升级 antd、新增 AI 辅助升级能力,多项功能改进
  • 猫抓浏览器扩展完全指南:告别网页资源获取烦恼
  • 2026年国内3大主流一物一码服务商对比:中大型快消选型权威测评报告 - 纳宝科技一物一码
  • 山东省 乳山市寄件省钱天花板!2026全国靠谱快递平台实测,低价寄件不踩坑 - 时讯资讯
  • 有什么软件可以去视频水印?四款小程序加桌面工具实测
  • 【数据分析】python-pandas速查文档(3)
  • 从零打造蓝牙遥控履带车:Arduino、3D打印与FPV系统全解析
  • Sora 2 AI主播生成全链路拆解:从提示词工程、语音驱动到唇形同步的7大关键技术突破
  • 选择题专练数据库原理精选30题
  • 2025泉州除甲醛公司Top5深度测评:绿舒环保稳居榜首 - 绿舒环保母婴除甲醛
  • 基于Raspberry Pi Pico W的Wi-Fi邮件报警系统设计与实现
  • Ubuntu 20.04 新手必看:刚装完系统,ifconfig和vim都用不了?5分钟搞定镜像源和常用工具安装
  • ZYZ28 2026.5.26 Round 记录
  • 专业开发者指南:使用pywencai高效获取同花顺问财金融数据
  • Go语言跨平台数据库开发:实现跨平台数据持久化
  • 选择题专练数据库原理精选30题[答案]
  • Arduino模拟信号控制实战:电位器PWM调控电机与LED
  • Arduino智能垃圾桶实战:超声波感应与舵机控制全解析