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

pyhton基础【7】容器介绍二

目录

五. 列表介绍

六. 列表的内置方法

数据增加(append、extend、insert)

数据查询(in、not in、count)

数据删除(del、pop、remove)

数据排序(sort、reverse)

reverse方法是将列表倒序

七. 列表嵌套


五. 列表介绍

引入

通过前面学习的字符串我们可以实现用它存储一串信息,例如存储一个人的名字小明,那么如何存储咱们班所有同学的名字呢?
定义100个变量,每个变量存放一个学生的姓名可行吗?有更好的办法吗?
答:列表

定义

定义列表的方式是[]

如下:用列表存储了三名学生的姓名
stu_names = ['张三', '李四', '王五']如下:用列表存储了五位同学的考试分数
scores = [100, 99, 100, 95, 90]

基本使用

下标

列表中存储的多个数据,我们可以对这些数据任意的使用

方式是:通过下标可以实现定位,然后就可以用这个数据

例如:

stu_names = ['张三', '李四', '王五']
print(stu_names[0])  # 此时只输出张三
stu_names[0] = "小明"
print(stu_names[0])  # 此时只输出小明

注意:下标依然是从零开始

切片

切片具体的知识我们已经学习过了,在列表也是支持切片操作的

stu_names = ['张三', '李四', '王五']
stu_names[1:3]  # 此时得到一个新列表 [李四', '王五']
列表逆序:
tu_names = ['张三', '李四', '王五']
stu_names = [::-1]  # 得到一个新列表['王五', '李四', '张三']

遍历

所谓列表遍历,就是指将列表中的所有的数据依次获取打印

方式一:使用for循环 (首选)
stu_names = ['张三', '李四', '王五']
for name in stu_names:print(name)
运行结果:
张三
李四
王五方式二:使用while循环
stu_names = ['张三', '李四', '王五']
length = len(stu_names)
i = 0
while i < length:print(stu_names[i])i += 1
运行结果:
张三
李四
王五

注意点

学习其他编程语言的同学,此时能够看到Python中的列表与C、C++、Java中的数组很类似:

相同点:列表和数组都能实现多个数据的存储

不同点:列表可以存储不同类似的数据,而数组只能存储相同数据类型

如以下代码,完成了一个列表存储了多个信息:

teacher = ["小明", "上海市", 19, 170.5]  # 19为年龄,170.5为身高

虽然Python中的列表可以存储多个不同的数据类型,但一般情况下我们很少这么做,而是把数据类型相同的数据放到一个列表,这样操作时会更加方便,否则就会出现一会整数,一会字符串很容易出错。如果真的需要存储多个数据,例如一个人的信息由多个组成,此时一般用Python中的字典来进行存储

六. 列表的内置方法

列表,最大的特点能够存储多个数据,一般情况下我们需要对这个列表进行数据的增删改查,详细功能如下:

数据增加(append、extend、insert)

append方法

通过append可以向列表添加元素

格式:
列表.append(新元素数据)示例:
# 定义列个表存储3个学生的姓名
stu_names = ['张三','李四','王五']
print("-----添加之前,列表的数据-----")
for name in stu_names:print(name)# 提示、并添加元素
temp = input('请输入要添加的学生姓名:')
stu_names.append(temp)print("-----添加之后,列表的数据-----")
for name in stu_names:print(name)

extend方法

通过extend可以将另一个列表中的元素逐一添加到列表中

格式:
列表.extend(另外一个列表)示例:
>>> a = [1, 2]
>>> b = [3, 4]
>>> a.append(b)
>>> a
[1, 2, [3, 4]]
>>> a.extend(b)
>>> a
[1, 2, [3, 4], 3, 4]

insert方法

insert(index, object)在指定位置index(索引,理解为下标即可)前插入元素object

>>> a = [0, 1, 2]
>>> a.insert(1, 3)
>>> a
[0, 3, 1, 2]

数据修改

修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改

格式:
列表[下标] = 新数据示例:
# 定义列个表存储3个学生的姓名
stu_names = ['张三', '李四', '王五']
print("-----修改之前,列表的数据-----")
for name in stu_names:print(name)# 修改元素
stu_names[1] = '赵六'
print("-----修改之后,列表的数据-----")
for name in stu_names:print(name)
数据查询(in、not in、count)

所谓的查找,就是看看指定的元素是否存在。

查找的常用方法为:

  • in(存在),如果存在那么结果为true,否则为false
  • not in(不存在),如果不存在那么结果为true,否则false
in格式:
数据 in 列表not in 格式:
数据 not in 列表示例:
# 待查找的列表
stu_names = ['张三','李四','王五']# 获取用户要查找的名字
find_name = input('请输入要查找的姓名:')# 查找是否存在
if find_name in stu_names:print('找到了名字')
else:print('没有找到')

count查询元素个数

格式:
列表.count("要查询的数据")  # 结果就是找到的数据的个数nums = [1, 2, 3, 4, 5, 1, 2, 3]
nums.count(1)  # 查找的数据1 一共有2个,所以结果为2
2nums.count(9)  # 没有找到数据9 所以结果为0
0
数据删除(del、pop、remove)

列表元素的常用删除方法有:

  • del:根据下标进行删除
  • pop:删除最后一个元素
  • remove:根据元素的值进行删除

del

movie_names = ['加勒比海盗', '骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']print('------删除之前------')
for name in movie_names:print(name)del movie_names[2]  # 这里根据下标进行删除print('------删除之后------')
for name in movie_names:print(name)

pop

movie_names = ['加勒比海盗', '骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']print('------删除之前------')
for name in movie_names:print(name)movie_names.pop()  # 删除最后1个print('------删除之后------')
for name in movie_names:print(name)

remove

movie_names = ['加勒比海盗', '骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']print('------删除之前------')
for name in movie_names:print(name)movie_names.remove('指环王')  # 删除指定的数据print('------删除之后------')
for name in movie_names:print(name)
数据排序(sort、reverse)

sort方法是将列表按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。

>>> a = [1, 4, 2, 3]
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> a.sort(reverse=True)
>>> a
[4, 3, 2, 1]
reverse方法是将列表倒序
>>> a = [1, 4, 2, 3]
>>> a
[1, 4, 2, 3]
>>> a.reverse()
>>> a
[3, 2, 4, 1]
七. 列表嵌套

什么是列表嵌套

类似while循环的嵌套,列表也是支持嵌套的,一个列表中的元素是一个列表类型那么这就是列表的嵌套。

school_names = [['北京大学', '清华大学'],['南开大学', '天津大学', '天津师范大学'],['山东大学', '中国海洋大学']
]

应用

一个学校,有三个办公室,现在有八位老师等待工位的分配,请编写程序,完成随机的分配:

import random# 定义一个列表用来保存3个办公室
offices = [[], [], []]# 定义一个列表用来存储8位老师的名字
names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']# 遍历所有的老师,随机安排到0、1、2号办公室
for name in names:random_num = random.randint(0, 2)offices[random_num].append(name)i = 1
for office_names in offices:print('办公室%d的人数为:%d' % (i, len(office_names)))i += 1for name in office_names:print("%s" % name, end=' ')print("\n")print("-" * 20)运行结果如下: 因为是随机,所以每次运行结果不一定相同办公室1的人数为:1
G --------------------
办公室2的人数为:2
A B --------------------
办公室3的人数为:5
C D E F H

http://www.xdnf.cn/news/14129.html

相关文章:

  • iOS 审核 cocos 4.3a【苹果机审的“分层阈值”设计】
  • 详解智能指针
  • 大规模异步新闻爬虫的分布式实现
  • 理解C++中传引用和传值的区别
  • CTFshow-PWN-栈溢出(pwn56-pwn59)
  • 学习Oracle------认识VARCHAR2
  • langchain从入门到精通(七)——利用回调功能调试链应用 - 让过程更透明
  • Wiiu平台RetroArch全能模拟器美化整合包v1.18
  • 【大模型应用开发】SpringBoot 整合基于 Ollama 的 DeepSeek,并对接前端( 全部代码 !!!)
  • TensorFlow 2.0 与 Python 3.11 兼容性
  • 查找PPT中引用的图表在哪个EXCEL文件中
  • 笔记本电脑安装win11哪个版本好_笔记本电脑安装win11专业版图文教程
  • Spring中观察者模式的应用
  • 【论文解读】AgentThink:让VLM在自动驾驶中学会思考与使用工具
  • sql列中数据通过逗号分割的集合,对其中的值进行全表查重
  • NAS 资源帖
  • STM32项目---汽车氛围灯
  • flowable工作流的学习demo
  • 【本地虚拟机】xshell连接虚拟机linux服务器
  • 云平台|Linux部分指令
  • 【Erdas实验教程】021:遥感图像辐射增强( 查找表拉伸)
  • NLP学习路线图(四十七):隐私保护
  • YOLOv8新突破:FASFFHead多尺度检测的极致探索
  • 【模板】埃拉托色尼筛法(埃氏筛)
  • Spring-rabbit重试消费源码分析
  • OCCT基础类库介绍:Modeling Data - 2D Geometry 3D Geometry Topology
  • Javascript和NodeJS异常捕获对比
  • C++基础算法————二分查找
  • 深度学习——基于卷积神经网络实现食物图像分类【1】(datalodar处理方法)
  • VMware虚拟机集群上部署HDFS集群