Devops系列---python基础篇二

1、列表

1.1 概念

格式: 名称 = [ “元素1”,“元素2”,…]

#定义一个列表
computer = ["主机","键盘","显示器","鼠标"]
类型方法用途
index(“元素”)查看元素索引位置
count(“元素”)统计元素出现的次数
reverse()倒序排序元素
sort进行排序
append(“元素”)追加一个元素
insert(index,“元素”)在指定索引位置插入一个元素
computer[index] = “元素”修改指定索引的值
删除remove(“元素”)删除指定的元素
pop(index=-1)通过索引删除元素并返回索引

1.2 习题

1.2.1 定义一个列表并打印出列表里的元素
#1、创建一个列表,命名为names,往里面添加陈贤贤、大财神、飞鱼、WuYing、阿阳和Black元素
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
print(names)
1.2.2 引用列表的长度拼接字符串
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
print('我建立的学习群有',len(names),'个学生在微信群里面')      #6的前后有空格
print('我建立的学习群有'+str(len(names))+'个学生在微信群里面')  #6的前后没有空格
1.2.3 引用列表里面的变量拼接字符串
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
print("我们班的班花叫:",names[2])
print("我们班的班花叫:"+ str(names[2]))

注意:拼接字符串引用列表里面的元素时,默认元素前时有空格的,如果不需要空格使用+str转换,此时就不需要使用逗号隔开

1.2.3 往列表中添加两个元素
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
names.insert(2,["老男孩,老女孩"])
print(names)
1.2.4改变列表中的某一个元素名称
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
names[names.index("WuYing")] = "吴莹"
print(names)#方法二:
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
names[3] = "吴莹"
print(names)
1.2.5返回列表中元素的位置(索引值)
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
print(names.index("飞鱼"))
1.2.6 合并列表(使用extend)
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
numbers = [1,2,3,4,5,6,2,5,4]
names.extend(numbers)
print(names)
1.2.7 取出列表中指定的元素
1、取出names列表中索引4-7的元素
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
numbers = [1,2,3,4,5,6,2,5,4]
names.extend(numbers)
print(names[4:8])  #包含第七个元素2、取出names列表中索引2-10的元素,步长为2
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
numbers = [1,2,3,4,5,6,2,5,4]
names.extend(numbers)
print(names[2:11:2])
1.2.8 打印特定索引值和元素
1、循环names列表,打印每个元素的索引值和元素。
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
for i in names:print(names.index(i),i)2enumerate()枚举
names = ["陈贤贤","大财神","飞鱼","WuYing","阿阳","Black"]
for index,i in enumerate(names):print(index,i)3、names列表里有32,请返回第二个2的索引值,不要人肉,要动态找
names = ["陈贤贤", "大财神", "飞鱼", "WuYing", "阿阳", "Black", 1, 2, 3, 4, 2, 5, 6, 2]
print(names.index(2, names.index(2)+1))
1.2.9 商品列表
products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]
print("------ 商品列表 ------ ")
for index,i in enumerate(products):print("%s %s %s" % (index, i[0],i[1]))

在这里插入图片描述

1.2.10 根据products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终用户输入q退出时,打印购买的商品列表
products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]
shop_car = []  #用户购物车
shop_cost = 0  #用户花费金额
exit_log = False #标志位while not exit_log:print("------ 商品列表 ------")for index,i in enumerate(products):print("%s %s %s" %(index,i[0],i[1]))use_choice = input("\n输入你想购买的产品序列号(按q退出):")if use_choice.isdigit():  #判断用户输入的是否是数字use_choice = int(use_choice)if use_choice >=0 and use_choice < len(products):shop_car.append(products[use_choice])  #加入购物车shop_cost += products[use_choice][1]    #计算费用print("\n %s 已经加入你的购物车\n"%products[use_choice])else:print("抱歉,此商品不存在\n")elif use_choice == "q":# 用户选择退出if len(shop_car) > 0:# 判断用户是否购买了商品print("\n------ 你的购物车 ------")for index, i in enumerate(shop_car):# index和i为临时变量,与前一个for循环里index和i作用的列表不同,故可重用print("%s  %s" % (i[0], i[1]))print("\n你此次购物的花费合计是:%s元\n" % shop_cost)exit_log = True # 退出购物else:exit_log = True # 未购买商品,不打印购物车商品,直接退出else:# 输入不合法exit_log = True
1.2.11 删除列表元素
names = ["陈贤贤", "大财神", "飞鱼", "WuYing", "阿阳", "Black"]
names.remove('飞鱼')
print(names)

2、元组

2.1 概念

元组:与列表相似,也是一个序列数据结构。主要区别在于元组中的元素不能修改

格式:名称 = (“a”,“b”,“c”,…)

#定义一个元组
computer = ("主机","显示器","鼠标","键盘")
print(computer)

2.2 综合案例

students = (("alice",85),("bob",99),("david",78)
)#1. 访问元组中的数据
print("学生名单以及成绩如下:")
for student_sheet in students:name,sore = student_sheetprint(f"{name}的成绩是{sore}")# 2. 计算总成绩和平均成绩
total_sore = 0 #初始化总成绩
for student_sheet in students:total_sore += int(student_sheet[1])average_sore = int(total_sore / len(students))
print("班级总成绩:"+ str(total_sore))
print("班级平均成绩:",average_sore)#创建新的元组,代表新的学生
new_student = ("Frank", 90)
students = students + (new_student,)
print(students)

注意:元组里面元素的内容是不可逆的,无法修改的

3、集合

3.1概念

集合是一个无序、不重复的元素序列,主要用于元素去重和关系测试

关系测试支持:

  • 联合
  • 交集
  • 差集
  • 对称差集

格式: 名称 = {“a”,“b”,…}或者 名称 = set([“a”,“b”,“…”])

#定义一个集合
computer = ["主机","显示器","鼠标","键盘","显示器","鼠标"]
com = set(computer)
print(com)

3.2案例

# 创建一个字典来管理学生选课信息
students_courses = {"alice": {"math", "english", "science"},"bob": {"math", "history"},"charlie": {"science", "art"},"david": {"math", "science", "art"},
}# 函数:添加课程
def add_course(student, course):if student in students_courses:students_courses[student].add(course)print(f"{student} 已添加课程: {course}")else:print(f"学生 {student} 不存在。")# 函数:删除课程
def remove_course(student, course):if student in students_courses:if course in students_courses[student]:students_courses[student].remove(course)print(f"{student} 已删除课程: {course}")else:print(f"{student} 没有选修课程: {course}")else:print(f"学生 {student} 不存在。")# 函数:查看某位学生已选课程
def view_courses(student):if student in students_courses:print(f"{student} 已选课程: {students_courses[student]}")else:print(f"学生 {student} 不存在。")# 函数:计算选修同一课程的学生
def students_in_course(course):enrolled_students = {student for student, courses in students_courses.items() if course in courses}return enrolled_students# 函数:计算选修所有课程的学生
def all_students_in_courses():all_courses = set()for courses in students_courses.values():all_courses.update(courses)return all_courses# 测试添加课程
add_course("alice", "art")
add_course("bob", "science")# 测试删除课程
remove_course("charlie", "art")
remove_course("david", "math")# 查看学生已选课程
view_courses("alice")
view_courses("bob")# 计算选修同一课程的学生
course_to_check = "math"
enrolled_students = students_in_course(course_to_check)
print(f"选修 {course_to_check} 的学生有: {enrolled_students}")# 计算所有选修的课程
all_courses = all_students_in_courses()
print(f"所有选修的课程有: {all_courses}")

4、字典

4.1概念

字典:是一个具有映射关系的键值对的数据结构。用于存储有一定关系的元素

格式: d = {‘key1’:value1,“key2”:value2,…}

注意:字典通过key来访问value,因此字典中的key不允许重复

#定义字典
computer = {"主机":5000,"鼠标":1000}
类型方法用途
computer[“key”]获取字典key的值
computer.get(“key”,None)获取字典keyd的值,如果不存在返回None
keys()获取所有键
values()获取所有键的值
items()获取所有键值
computer[“key”] = value添加键值,如果键存在则覆盖
update(“key”)添加新字典
setdefault(“key”,default=None)如果键不存在,添加键并将值设置默认值,如果键存在返回值
pop(“key”)删除指定键
computer.popitem()删除最后一对键值并返回

4.2 综合案例

# 创建一个学生成绩字典
students_scores = {"alice": {"math": 85, "english": 78, "science": 92},"bob": {"math": 90, "english": 88, "science": 95},"charlie": {"math": 70, "english": 80, "science": 85}
}# 函数:添加新学生的成绩
def add_student(name, scores):if name in students_scores:print(f"学生 {name} 已存在,更新其成绩。")students_scores[name] = scores# 函数:更新学生的某一科目成绩
def update_score(name, subject, score):if name in students_scores and subject in students_scores[name]:students_scores[name][subject] = scoreprint(f"{name}{subject} 成绩已更新为 {score}。")else:print(f"学生 {name} 或科目 {subject} 不存在。")# 函数:删除学生
def delete_student(name):if name in students_scores:del students_scores[name]print(f"学生 {name} 已被删除。")else:print(f"学生 {name} 不存在。")# 函数:打印所有学生及其成绩
def print_all_scores():for student, scores in students_scores.items():print(f"{student} 的成绩:")for subject, score in scores.items():print(f"  {subject}: {score}")print()# 函数:计算某一学生的平均成绩
def calculate_average(name):if name in students_scores:scores = students_scores[name].values()average = sum(scores) / len(scores)print(f"{name} 的平均成绩是:{average:.2f}")else:print(f"学生 {name} 不存在。")# 添加新学生
add_student("david", {"math": 88, "english": 76, "science": 90})# 更新成绩
update_score("alice", "math", 90)# 删除学生
delete_student("charlie")# 打印所有学生成绩
print_all_scores()# 计算某一学生的平均成绩
calculate_average("bob")
calculate_average("david")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/85894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode - 234. 回文链表

目录 题目 快慢双指针步骤 读者可能的错误写法 正确的写法 题目 234. 回文链表 - 力扣&#xff08;LeetCode&#xff09; 快慢双指针步骤 找到链表的中点&#xff08;find_mid函数&#xff09;&#xff1a; 使用快慢指针&#xff0c;慢指针每次走一步&#xff0c;快指针…

UniApp 全生命周期钩子详解

&#x1f449; 整理不易&#xff0c;如果本文对你有帮助&#xff0c;欢迎点个【赞 &#x1f44d;】【收藏 ⭐】【关注 &#x1f9e1;】 后续我们还将继续分享实用的 UniApp 教程&#xff0c;比如&#xff1a; 文件上传全局请求封装状态管理动态路由等… &#x1f4ee; 有任何…

探索NautilusTrader:下一代开源算法交易平台的革命性突破

在金融科技的浪潮中,量化交易领域正经历一场由开源技术驱动的变革。NautilusTrader(https://github.com/nautechsystems/nautilus_trader)作为一款高性能、生产级的算法交易平台,正以其创新的设计理念和强大的技术架构重塑开发者的策略研发流程。 一、核心定位:打破回测与…

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…

[论文阅读] (38)基于大模型的威胁情报分析与知识图谱构建论文总结(读书笔记)

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…

python批量解析提取word内容到excel

# 基于Python实现Word文档内容批量提取与Excel自动化存储 ## 引言 在日常办公场景中&#xff0c;常需要从大量Word文档中提取结构化数据并整理到Excel表格中。传统手动操作效率低下&#xff0c;本文介绍如何通过Python实现自动化批处理&#xff0c;使用python-docx和openpyxl…

win32相关(远程线程和远程线程注入)

远程线程和远程线程注入 CreateRemoteThread函数 作用&#xff1a;创建在另一个进程的虚拟地址空间中运行的线程 HANDLE CreateRemoteThread([in] HANDLE hProcess, // 需要在哪个进程中创建线程[in] LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全…

Flyway

Flyway 是一个强大的数据库版本控制和迁移工具&#xff0c;主要用于管理数据库结构的变更和演进。 核心作用 1. 数据库版本控制 追踪数据库变更&#xff1a;记录每次数据库结构的修改版本管理&#xff1a;为每个变更分配版本号变更历史&#xff1a;完整记录数据库演进过程 …

【深尚想】OPA855QDSGRQ1运算放大器IC德州仪器TI汽车级高速8GHz增益带宽的全面解析

1. 元器件定义与核心特性 OPA855QDSGRQ1 是德州仪器&#xff08;TI&#xff09;推出的一款 汽车级高速运算放大器&#xff0c;专为宽带跨阻放大&#xff08;TIA&#xff09;和电压放大应用优化。核心特性包括&#xff1a; 超高速性能&#xff1a;增益带宽积&#xff08;GBWP&a…

机器学习实验八--基于pca的人脸识别

基于pca的人脸识别 引言&#xff1a;pca1.pca是什么2.PCA算法的基本步骤 实例&#xff1a;人脸识别1.实验目的2.实现步骤3.代码实现4.实验结果5.实验总结 引言&#xff1a;pca 1.pca是什么 pca是一种统计方法&#xff0c;它可以通过正交变换将一组可能相关的变量转换成一组线…

【LLIE专题】NTIRE 2025 低照度图像增强第二名方案

Towards Scale-Aware Low-Light Enhancement via Structure-Guided Transformer Design&#xff08;2025&#xff0c;NTIRE&#xff09; 专题介绍一、研究背景二、SG-LLIE方法1.和Retinexformer方案对比2.总体方案及创新点3.详细方案3.1 结构先验提取3.2 网络结构3.3 损失函数 …

泊松融合的介绍和OpenCV教程

泊松融合 Poisson Blending 简介 核心思想 泊松融合的目标是在保留剪切图像的梯度(纹理)信息的同时,使融合结果在边界区域平滑过渡到目标图像中。换句话说,它在融合区域中重建一个图像,使其梯度尽可能接近源图像的梯度,并且边界贴合目标图像。 数学描述 泊松融合将问题…

Unity协程Coroutine与UniTask对比

原理对比 CoroutineUniTask本质IEnumerator 的协作调度器async/await 状态机&#xff08;IAsyncStateMachine&#xff09;调度方式Unity 内部调用 MoveNext()自建 PlayerLoopRunner 控制状态推进内存管理引用类型&#xff0c;频繁分配 GC结构体 UniTask&#xff0c;低 GC 压力…

MAC软件打开提示已损坏:“已损坏,打不开。您应将它移到废纸篓“

打开「终端.app」&#xff0c;输入以下命令并回车&#xff0c;输入开机密码回车 sudo spctl --master-disable 按照上述步骤操作完成后&#xff0c;打开「系统偏好设置」-「安全与隐私」-「通用」&#xff0c;确保已经修改为「任何来源」。 打开「终端.app」&#xff0c;输入…

JAVA之 Lambda

Java Lambda Lambda 表达式是 Java 8 的核心特性&#xff0c;通过 函数式编程 大幅简化代码。其核心思想是将行为作为参数传递&#xff0c;替代匿名内部类&#xff0c;提升代码的简洁性和可读性。以下是系统解析和完整代码示例&#xff1a; 一、Lambda 表达式基础 语法结构 (…

Starrocks中RoaringBitmap杂谈

背景 最近在阅读Starrocks源码的时候&#xff0c;遇到ColumnRefSet的RoaringBitmap使用&#xff0c;所以借此来讨论一下RoaringBitmap这个数据结构,这种思想是很值得借鉴的。 对于的实现可以参考一下 <dependency><groupId>org.roaringbitmap</groupId><…

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…

从Java的Jvm的角度解释一下为什么String不可变?

从Java的Jvm的角度解释一下为什么String不可变&#xff1f; 从 JVM 的角度看&#xff0c;Java 中 String 的不可变性是由多层次的机制共同保障的&#xff0c;这些设计涉及内存管理、性能优化和安全保障&#xff1a; 1. JVM 内存模型与字符串常量池 字符串常量池&#xff08;St…

初识硬编码(x86指令描述)

硬编码 任何一个程序其实都可以看做两部分组成的&#xff0c;指令和数据 cpu并没有明确的规定哪些要当做数据&#xff0c;哪些要当做指令来执行&#xff0c;把数据给EIP只要是遵循了指定的格式&#xff08;x86 x64 ARM&#xff09;&#xff0c;cpu都会当做指令来执行 x86/x64…

3.RV1126-OPENCV 图像叠加

一.功能介绍 图像叠加&#xff1a;就是在一张图片上放上自己想要的图片&#xff0c;如LOGO&#xff0c;时间等。有点像之前提到的OSD原理一样。例如&#xff1a;下图一张图片&#xff0c;在左上角增加其他图片。 二.OPENCV中图像叠加常用的API 1. copyTo方法进行图像叠加 原理…