Python基础——列表及其应用

简介: Python基础——列表及其应用

一. 列表的应用场景


思考:有一个人的姓名(TOM)怎么书写存储程序?


答:变量。


思考:如果一个班级100位学生,每个人的姓名都要存储,应该如何书写程序?声明100个变量吗?


答:列表即可, 列表一次性可以存储多个数据。


二. 列表的格式


[数据1, 数据2, 数据3, 数据4......]
• 1


列表可以一次性存储多个数据,且可以为不同数据类型。


三. 列表的常用操作


列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查。


3.1 查找


3.1.1 下标


name_list = ['Tom', 'Lily', 'Rose']
print(name_list[0])  # Tom
print(name_list[1])  # Lily
print(name_list[2])  # Rose


3.1.2 函数

  • index():返回指定数据所在位置的下标 。


  1. 语法


列表序列.index(数据, 开始位置下标, 结束位置下标)


  1. 快速体验


name_list = ['Tom', 'Lily', 'Rose']
print(name_list.index('Lily', 0, 2))  # 1


注意:如果查找的数据不存在则报错。


  • count():统计指定数据在当前列表中出现的次数。


name_list = ['Tom', 'Lily', 'Rose']
print(name_list.count('Lily'))  # 1


  • len():访问列表长度,即列表中数据的个数。


name_list = ['Tom', 'Lily', 'Rose']
print(len(name_list))  # 3


3.1.3 判断是否存在


  • in:判断指定数据在某个列表序列,


如果在返回True,否则返回False


name_list = ['Tom', 'Lily', 'Rose']
# 结果:True
print('Lily' in name_list)
# 结果:False
print('Lilys' in name_list)


  • not in:判断指定数据不在某个列表序列,如果不在返回True,否则返回False


name_list = ['Tom', 'Lily', 'Rose']
# 结果:False
print('Lily' not in name_list)
# 结果:True
print('Lilys' not in name_list)


  • 体验案例


需求:查找用户输入的名字是否已经存在。


name_list = ['Tom', 'Lily', 'Rose']
name = input('请输入您要搜索的名字:')
if name in name_list:
    print(f'您输入的名字是{name}, 名字已经存在')
else:
    print(f'您输入的名字是{name}, 名字不存在')



3.2 增加


作用:增加指定数据到列表中。


  • append():列表结尾追加数据。


  1. 语法


列表序列.append(数据)


  1. 体验


name_list = ['Tom', 'Lily', 'Rose']
name_list.append('xiaoming')
# 结果:['Tom', 'Lily', 'Rose', 'xiaoming']
print(name_list)


列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型数据。


  1. 注意点


如果append()追加的数据是一个序列,则追加整个序列到列表


name_list = ['Tom', 'Lily', 'Rose']
name_list.append(['xiaoming', 'xiaohong'])
# 结果:['Tom', 'Lily', 'Rose', ['xiaoming', 'xiaohong']]
print(name_list)


  • extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表。


  1. 语法


列表序列.extend(数据)


  1. 快速体验


2.1 单个数据


name_list = ['Tom', 'Lily', 'Rose']
name_list.extend('xiaoming')
# 结果:['Tom', 'Lily', 'Rose', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g']
print(name_list)


2.2 序列数据


name_list = ['Tom', 'Lily', 'Rose']
name_list.extend(['xiaoming', 'xiaohong'])
# 结果:['Tom', 'Lily', 'Rose', 'xiaoming', 'xiaohong']
print(name_list)


  • insert():指定位置新增数据。


  1. 语法


列表序列.insert(位置下标, 数据)


  1. 快速体验


name_list = ['Tom', 'Lily', 'Rose']
name_list.insert(1, 'xiaoming')
# 结果:['Tom', 'xiaoming', 'Lily', 'Rose']
print(name_list)


3.3 删除


  • del


  1. 语法


del 目标


  1. 快速体验


2.1 删除列表


name_list = ['Tom', 'Lily', 'Rose']
# 结果:报错提示:name 'name_list' is not defined
del name_list
print(name_list)


2.2 删除指定数据


name_list = ['Tom', 'Lily', 'Rose']
del name_list[0]
# 结果:['Lily', 'Rose']
print(name_list)


  • pop():删除指定下标的数据(默认为最后一个),并返回该数据。


  1. 语法


列表序列.pop(下标)


  1. 快速体验


name_list = ['Tom', 'Lily', 'Rose']
del_name = name_list.pop(1)
# 结果:Lily
print(del_name)
# 结果:['Tom', 'Rose']
print(name_list)


  • remove():移除列表中某个数据的第一个匹配项。


  1. 语法


列表序列.remove(数据)


  1. 快速体验


name_list = ['Tom', 'Lily', 'Rose']
name_list.remove('Rose')
# 结果:['Tom', 'Lily']
print(name_list)


  • clear():清空列表


name_list = ['Tom', 'Lily', 'Rose']
name_list.clear()
print(name_list) # 结果: []


3.4 修改


  • 修改指定下标数据


name_list = ['Tom', 'Lily', 'Rose']
name_list[0] = 'aaa'
# 结果:['aaa', 'Lily', 'Rose']
print(name_list)


  • 逆置:reverse()


num_list = [1, 5, 2, 3, 6, 8]
num_list.reverse()
# 结果:[8, 6, 3, 2, 5, 1]
print(num_list)


  • 排序:sort()


  1. 语法


列表序列.sort( key=None, reverse=False)


注意:reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)


  1. 快速体验


num_list = [1, 5, 2, 3, 6, 8]
num_list.sort()
# 结果:[1, 2, 3, 5, 6, 8]
print(num_list)


3.5 复制


函数:copy()


name_list = ['Tom', 'Lily', 'Rose']
name_li2 = name_list.copy()
# 结果:['Tom', 'Lily', 'Rose']
print(name_li2)


四. 列表的循环遍历


需求:依次打印列表中的各个数据。


4.1 while


  • 代码


name_list = ['Tom', 'Lily', 'Rose']
i = 0
while i < len(name_list):
    print(name_list[i])
    i += 1


执行结果



4.2 for


  • 代码


name_list = ['Tom', 'Lily', 'Rose']
for i in name_list:
    print(i)


执行结果



五. 列表嵌套


所谓列表嵌套指的就是一个列表里面包含了其他的子列表。


应用场景:要存储班级一、二、三三个班级学生姓名,且每个班级的学生姓名在一个列表。


name_list = [['小明', '小红', '小绿'], ['Tom', 'Lily', 'Rose'], ['张三', '李四', '王五']]


思考: 如何查找到数据"李四"?


# 第一步:按下标查找到李四所在的列表
print(name_list[2])
# 第二步:从李四所在的列表里面,再按下标找到数据李四
print(name_list[2][1])


六. 综合应用 – 随机分配办公室


需求:有三个办公室,8位老师,8位老师随机分配到3个办公室


# 需求:8位老师,3个办公室, 将8位老师随机分配到3个办公室
"""
步骤:
1. 准备数据
    1.1 8位老师 -- 列表
    1.2 3个办公室 - 列表嵌套
2. 分配老师到办公室
    *** 随机分配
    就是把老师的名字写入到办公室列表 -- 办公室列表追加老师名字数据
3. 验证是否分配成功
    打印办公室详细信息:每个办公室的人数和对应的老师名字
"""
import random
# 1. 准备数据
teachers = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
offices = [[], [], []]
# 2. 分配老师到办公室 -- 取到每个老师放到办公室列表 -- 遍历老师列表数据
for name in teachers:
    # 列表追加数据 -- append(选中) extend insert
    # xx[0] -- 不能指定是具体某个下标 -- 随机
    num = random.randint(0, 2)
    offices[num].append(name)
# print(num)
# print(offices)
# 为了更贴合生活,把各个办公室子列表加一个办公室编号 1, 2, 3
i = 1
# 3. 验证是否分配成功
for office in offices:
    # 打印办公室人数 -- 子列表数据的个数  len()
    print(f'办公室{i}的人数是{len(office)},老师分别是:')
    # 打印老师的名字
    # print()  --  每个子列表里面的名字个数不一定 -- 遍历 -- 子列表
    for name in office:
        print(name)
    i += 1


目录
打赏
0
0
0
0
40
分享
相关文章
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
54 20
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
126 3
线性回归模型的原理、实现及应用,特别是在 Python 中的实践
本文深入探讨了线性回归模型的原理、实现及应用,特别是在 Python 中的实践。线性回归假设因变量与自变量间存在线性关系,通过建立线性方程预测未知数据。文章介绍了模型的基本原理、实现步骤、Python 常用库(如 Scikit-learn 和 Statsmodels)、参数解释、优缺点及扩展应用,强调了其在数据分析中的重要性和局限性。
102 3
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Savitzky-Golay滤波器是一种基于局部多项式回归的数字滤波器,广泛应用于信号处理领域。它通过线性最小二乘法拟合低阶多项式到滑动窗口中的数据点,在降噪的同时保持信号的关键特征,如峰值和谷值。本文介绍了该滤波器的原理、实现及应用,展示了其在Python中的具体实现,并分析了不同参数对滤波效果的影响。适合需要保持信号特征的应用场景。
114 11
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Python 在企业级应用中的两大硬伤
关系数据库和SQL在企业级应用中面临诸多挑战,如复杂SQL难以移植、数据库负担重、应用间强耦合等。Python虽是替代选择,但在大数据运算和版本管理方面存在不足。SPL(esProc Structured Programming Language)作为开源语言,专门针对结构化数据计算,解决了Python的这些硬伤。它提供高效的大数据运算能力、并行处理、高性能文件存储格式(如btx、ctx),以及一致的版本管理,确保企业级应用的稳定性和高性能。此外,SPL与Java无缝集成,适合现代J2EE体系应用,简化开发并提升性能。
|
1月前
|
Python列表
Python列表。
50 8
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
39 9
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
69 14
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
104 10

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等