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

Python 基础教程:列表(第9篇)

  1. 什么是列表?
    在python中列表(list)是一种有序、可变的数据类型,可以存储任意类型的对象(整数、浮点数、字符串甚至其他列表),使用方括号[]定义,元素之间用逗号分隔。
    特点:
    有序:每个元素都有固定的位置(索引)。
    可变:可以增、删、改元素。
    异构:可以存放不同类型的数据。

  2. 创建列表

""" 使用list()函数创建 使用[]创建 列表推导式创建: 格式:my_list=[i for i in 可迭代的] 格式:my_list=[i for i in range() if 表达式] 注意:列表推导式虽然简洁,但不要过度嵌套(最多两层),否则可读性会下降。 """# 函数创建列表my_list=list()my_list1=list([1,2,3])# []创建列表my_list2=[]my_list3=["牛奶","鸡蛋","面包"]# 列表推导式my_list4=[iforiinrange(10)]# [0,1,2,3,4,5,6,7,8,9]my_list5=[pow(i,2)foriinrange(7)]# [0,1,4,9,16,25,36]my_list6=[[i-1,i+1]foriinrange(1,7)]# [[0,2],[1,3],[2,4],[3,5],[4,6],[5,7]]
  1. 访问列表
# 遍历列表my_list=[iforiinrange(10)]# 直接遍历元素foreachinmy_list:print(each)# 输出0 1 2 3 4 5 6 7 8 9# 通过索引遍历foriinrange(len(my_list)):print(my_list[i])# 输出0 1 2 3 4 5 6 7 8 9""" 索引从左往右是从0开始 索引从右往左是从-1开始 注意不要越界 each: A B C D E F index: 0 1 2 3 4 5 index: -6 -5 -4 -3 -2 -1 """# 通过索引访问my_list=["A","B","C","D","E","F"]print(my_list[0])# 输出"A"print(my_list[3])# 输出"D"print(my_list[8])# 报错IndexError: list index out of range,下标越界了# 访问列表最后一个元素print(my_list[-1])# 输出"F"print(my_list[len(my_list)-1])# 输出"F"# [start:end:step] start开始下标,end结束下标,不包括end,step表示步长,步长负数表示从右往前数print(my_list[:3])# 输出['A', 'B', 'C']print(my_list[::2])# 输出['A', 'C', 'E']print(my_list[-2::-2])# 输出['E', 'C', 'A']
  1. 添加元素
""" append(element)在列表末尾添加一个元素 insert(index, element)在列表指定位置添加一个元素 extend(iterable)在列表末尾将一个可迭代对象的所有元素追加到末尾 """# append()my_list=["牛奶","鸡蛋","面包"]my_list.append("西红柿")print(my_list)# 输出['牛奶', '鸡蛋', '面包', '西红柿']my_list.append([1,2,3])print(my_list)# 输出['牛奶', '鸡蛋', '面包', '西红柿', [1, 2, 3]]# insert()my_list.insert(0,"西瓜")print(my_list)# 输出['西瓜', '牛奶', '鸡蛋', '面包', '西红柿', [1, 2, 3]]my_list.insert(len(my_list),"苹果")print(my_list)# 输出['西瓜', '牛奶', '鸡蛋', '面包', '西红柿', [1, 2, 3], '苹果']# extend()# 列表中只有一个元素my_list.extend(["helloworld"])print(my_list)# 输出['西瓜', '牛奶', '鸡蛋', '面包', '西红柿', [1, 2, 3], '苹果', 'helloworld']# 字符串中有多个元素分开添加my_list.extend(("helloworld"))print(my_list)# 输出['西瓜', '牛奶', '鸡蛋', '面包', '西红柿', [1, 2, 3], '苹果', 'helloworld', 'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
  1. 修改元素
""" 4.修改元素 """my_list=["牛奶","鸡蛋","面包"]# 通过索引修改my_list[2]="西红柿"# 输出['牛奶', '鸡蛋', '西红柿']print(my_list)# 通过切片修改,把等号左边的元素删除,把等号右边的可迭代对象插入到列表中my_list[0:len(my_list)]=[1,2,3]# 输出[1, 2, 3]print(my_list)# 通过列表推导式my_list=[iforiinrange(10)ifi%2]# 输出[1, 3, 5, 7, 9]print(my_list)
  1. 删除元素
""" 5.删除元素 remove(value)删除第一个匹配的元素,如果元素不存在会报错 pop(index)删除并且返回指定索引的元素,不传参默认删除最后一个元素 clear()清空所有元素 del 切片 """# remove()my_list=[1,2,1,3,4,5]my_list.remove(1)# 输出[2, 1, 3, 4, 5]print(my_list)# pop()r=my_list.pop(3)# 输出[2, 1, 3, 5]print(my_list)# 输出4print(r)# clear()my_list.clear()# 输出[]print(my_list)# delmy_list1=[1,2,3,4,5,6,7,8]# 删除索引为0的元素delmy_list1[0]# 输出[2, 3, 4, 5, 6, 7, 8]print(my_list1)# 删除切片delmy_list1[:3]# 输出[5, 6, 7, 8]print(my_list1)# 删除变量delmy_list1# 报错NameError: name 'my_list1' is not definedprint(my_list1)# 切片my_list2=[1,2,3,4,5,6]# 重新赋值my_list2[:3]=["jack","rose"]# 输出['jack', 'rose', 4, 5, 6]print(my_list2)# 清空列表my_list2[:]=[]# 输出[]print(my_list2)# 列表推导式重新赋值my_list3=[1,23,4,5,6,91]my_list3=[iforiinmy_list3ifi%2==0]# 输出[4,6]print(my_list3)
  1. 其他方法
""" 6.其他方法 index(value, start, end)查找元素首次出现的索引,不存在会报错 count(value)统计元素出现的个数 sort(key=None, reverse=False)原地排序,默认升序,没有返回值 reverse()原地反转列表顺序,没有返回值 in,not in判断元素是否在列表中 """# index()my_list=[10,20,30,20]# 输出1print(my_list.index(20))# 指定搜索范围,输出3print(my_list.index(20,2,len(my_list)))# count()# 输出2print(my_list.count(20))# sort(),默认升序my_list.sort()# 输出[10, 20, 20, 30]print(my_list)# 降序my_list.sort(reverse=True)# 输出[30, 20, 20, 10]print(my_list)# reverse()my_list1=[10,20,30,20]my_list1.reverse()# 输出[20, 30, 20, 10]print(my_list1)
http://www.jsqmd.com/news/641942/

相关文章:

  • 2026.4.14
  • 从像素到病理报告只需11秒:2026奇点大会现场实测12款医学影像AI引擎,性能TOP3工具链完整拆解(含DICOMv4.0兼容清单)
  • 终极指南:5分钟免费解锁Cursor Pro全部功能,告别请求限制
  • 麻省理工学院全新突破:AI大模型记忆压缩技术让超长推理变成可能
  • 改了三天论文AI率纹丝不动,我是怎么从崩溃到通关的
  • 如何利用 RocketMQ for AI 构建高效、可靠、可扩展的多智能体系统
  • 用Python技能开启副业之路:技术兼职实战指南
  • 用JavaScript写RTS游戏AI:Screeps Arena新手避坑指南(附VSCode配置)
  • 解密Spring Boot微服务中的虚拟线程与RabbitMQ
  • CANoe.Diva实战:基于CDD的UDS诊断自动化测试全流程解析
  • CLIP技术全景解析:从图文对比预训练到零样本泛化的核心机制
  • STM32G474的FLASH保护,你真的用对了吗?从Level 0到Level 2的实战配置与解锁全攻略
  • SpringBoot 实战总结:踩坑与解决方案全记录
  • vue官网例子 讲解2
  • WCH CMSIS-DAP驱动黄色感叹号?别慌,一个轻量级驱动包5分钟搞定
  • 从混凝土到桥梁:手把手教你用Python和LabelImg为裂缝检测任务制作自己的数据集
  • AlienFX Tools:让Alienware设备重获新生的轻量级控制方案
  • 树莓派变身无线AP:桥接模式实战指南
  • 多模态大模型轻量化部署实战(含TensorRT-LLM+ONNX Runtime双路径优化):从24GB显存占用压缩至3.2GB的6个关键断点
  • 更年期慢慢养,乌鸡膏古法膳食暖心好物
  • 告别手动操作!Win10笔记本秒变永久WiFi热点:PS1脚本+任务计划组合方案
  • 天问ESP32C3-Pro语音大模型对话:从硬件连接到云端部署的完整实践
  • STM32CubeMX配置FreeRTOS软件定时器全流程(附osTimerStart避坑指南)
  • 告别混乱的ramdump文件:高通平台linux-ramdump-parser-v2配置与输出文件详解
  • 红外弱小目标检测:评价指标的MATLAB实现与优化
  • 【紧急预警】传统单模态情感API正被快速淘汰——SITS2026定义2026-2028行业准入技术基线
  • 3分钟搞定OFD转PDF:Ofd2Pdf完整使用指南与技巧分享
  • 毕业论文降重:哪些工具能同时解决重复率和AI率过高的问题?
  • 运筹学避坑指南:两阶段法中人工变量的正确使用方法
  • 有哪些AI生成软件能写出逻辑清晰的毕业论文(非抄袭向)?