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

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")

相关文章:

Devops系列---python基础篇二

1、列表 1.1 概念 格式&#xff1a; 名称 [ “元素1”,“元素2”,…] #定义一个列表 computer ["主机","键盘","显示器","鼠标"]类型方法用途查index(“元素”)查看元素索引位置count(“元素”)统计元素出现的次数reverse()倒序排…...

自定义事件wpf

// 自定义控件 public class MyCustomControl : Control { public static readonly RoutedEvent MyCustomEvent EventManager.RegisterRoutedEvent( "MyCustom", RoutingStrategy.Bubbling, typeof(RoutedEventHandler), typeof(MyCustomControl) ); public event R…...

​​TLV4062-Q1​​、TLV4082-Q1​​迟滞电压比较器应用笔记

文章目录 主要作用应用场景关键优势典型应用示意图TLV4062-Q1 和 TLV4082-Q1 的主要作用及应用场景如下: 主要作用 精密电压监测:是一款双通道、低功耗比较器,用于监测输入电压是否超过预设阈值。 集成高精度基准电压源(阈值精度1%),内置60mV迟滞功能,可避免因噪声导致的…...

C++.OpenGL (3/64)着色器(Shader)深入

着色器(Shader)深入 着色器核心概念 #mermaid-svg-xC0jTt9mJWGVa7yE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-xC0jTt9mJWGVa7yE .error-icon{fill:#552222;}#mermaid-svg-xC0jTt9mJWGVa7yE .error-text{fi…...

DHCP介绍

DHCP介绍 1 DHCP简述2 DHCP协议分析2.1 主要流程2.2 DHCP全部报文介绍2.3 IP租用更新报文2.4 DHCP协议抓包分析 3 DHCP应用3.1 DNSmasq参数配置3.2 DNSmasq框架代码3.2.1 创建socket监听67端口3.2.2 监听67端口3.2.3 处理DHCP请求 3.3 DNSmasq模块排障方法 4 常见问题排查4.1 问…...

李沐《动手学深度学习》d2l安装教程

文章目录 最新回答报错提醒安装对应版本安装C工具和Windows SDK 最新回答 安装旧版本即可 pip install d2l0.17.0 WARNING: Ignoring invalid distribution -pencv-python (e:\python3.10\lib\site-packages) Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple C…...

[蓝桥杯]耐摔指数

耐摔指数 题目描述 X 星球的居民脾气不太好&#xff0c;但好在他们生气的时候唯一的异常举动是&#xff1a;摔手机。 各大厂商也就纷纷推出各种耐摔型手机。X 星球的质监局规定了手机必须经过耐摔测试&#xff0c;并且评定出一个耐摔指数来&#xff0c;之后才允许上市流通。…...

深入理解数字音频:采样率、位深与量化

在当今数字时代&#xff0c;音频技术已经渗透到我们生活的方方面面——从流媒体音乐到视频会议&#xff0c;从播客到智能家居。但你是否曾好奇过&#xff0c;这些美妙的声音是如何被捕捉、存储并在数字世界中重现的&#xff1f;本文将带你深入了解数字音频的核心概念&#xff0…...

2024年第十五届蓝桥杯青少Scratch初级组-国赛—画矩形

2024年第十五届蓝桥杯青少Scratch初级组-国赛—画矩形 题目点下方&#xff0c;支持在线编程&#xff0c;在线获取源码和素材&#xff5e; 画矩形_scratch_少儿编程题库学习中心-嗨信奥 程序演示可点下方&#xff0c;支持源码获取&#xff5e; 画矩形-scratch作品-少儿编程题库…...

java面试场景题: 设计⼀个微博系统

微博系统设计指南&#xff1a;从理论到实践 系统设计考察的核心能力 系统设计面试模拟真实工作场景&#xff0c;候选人需与面试官协作解决模糊问题。关键在于沟通、分析和权衡能力&#xff0c;而非追求完美方案。面试官关注思考过程&#xff0c;而非最终答案。 常见误区与改…...

市面上哪款AI开源软件做ppt最好?

市面上哪款AI开源软件做ppt最好&#xff1f; aippt&#xff1a;AiPPT - 全智能 AI 一键生成 PPT 网站形式&#xff0c;需要注册 ai to pptx &#xff1a;SmartSchoolAI/ai-to-pptx: 前端后端同时开源。 Ai-to-pptx是一个使用AI技术(DeepSeek)制作PPTX的助手&#xff0c;支持在…...

JMM初学

文章目录 1,线程间的同步和通信1.1, 共享内存并发模型 (Shared Memory Model)线程通信机制线程同步机制特点 1.2, 消息传递并发模型 (Message Passing Model)线程通信机制线程同步机制特点 适用场景对比 2,Java内存模型JMM2.0,Java内存模型的基础&#xff08;1&#xff09;内存…...

transformer和 RNN以及他的几个变体区别 改进

Transformer、RNN 及其变体&#xff08;LSTM/GRU&#xff09;是深度学习中处理序列数据的核心模型&#xff0c;但它们的架构设计和应用场景有显著差异。以下从技术原理、优缺点和适用场景三个维度进行对比分析&#xff1a; 核心架构对比 模型核心机制并行计算能力长序列依赖处…...

构建云原生安全治理体系:挑战、策略与实践路径

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;从传统安全走向“云原生安全” 随着企业 IT 架构从传统单体系统向容器化、微服务和云原生平台转型&#xf…...

vue-print-nb 打印相关问题

一、背景与解决方案 1、ElementUI表格打印通病&#xff0c;均面临边框丢失、宽度超出问题&#xff1a;相关解决代码有注释&#xff1b; 2、大多数情况下不会打印页眉页脚的日期、网址、未配置popTitle显示的undefined&#xff1a;相关解决代码有注释&#xff1b; 3、打印预览页…...

vcs仿真产生fsdb波形的两种方式

目录 方法一&#xff1a; 使用verilog自带的系统函数 方法二&#xff1a; 使用UCLI command 2.1 需要了解什么是vcs的ucli&#xff0c;怎么使用ucli&#xff1f; 2.2 使用ucli dump波形的方法 使用vcs仿真产生fsdb波形有两种方式&#xff0c;本文参考《vcs user guide 20…...

每日算法 -【Swift 算法】三数之和

Swift&#xff5c;三数之和&#xff08;3Sum&#xff09;详细题解 注释 拓展&#xff08;LeetCode 15&#xff09; ✨题目描述 给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a, b, c&#xff0c;使得 a b c 0。请你找出所有和为 0 且不重…...

Go语言底层(三): sync 锁 与 对象池

1. 背景 在并发编程中&#xff0c;正确地管理共享资源是构建高性能程序的关键。Go 语言标准库中的 sync 包提供了一组基础而强大的并发原语&#xff0c;用于实现安全的协程间同步与资源控制。本文将简要介绍 sync 包中常用的类型和方法: sync 锁 与 对象池&#xff0c;帮助开发…...

登高架设作业操作证考试:理论题库高频考点有哪些?

一、安全基础知识 法律法规 《安全生产法》《特种作业人员安全技术培训考核管理规定》中关于登高作业的强制性要求&#xff08;如持证上岗、培训时限等&#xff09;。 事故责任划分&#xff1a;未系安全带、无监护作业等违规行为的法律后果。 个人防护 安全带使用标准&#…...

2025年06月06日Github流行趋势

项目名称&#xff1a;agent-zero 项目地址url&#xff1a;https://github.com/frdel/agent-zero项目语言&#xff1a;Python历史star数&#xff1a;8958今日star数&#xff1a;324项目维护者&#xff1a;frdel, 3clyp50, linuztx, evrardt, Jbollenbacher项目简介&#xff1a;A…...

华为云CentOS配置在线yum源,连接公网后,逐步复制粘贴,看好自己对应的版本即可,【新手必看】

华为云镜像源配置 YUM 源的详细步骤&#xff1a; 1. 备份原有的 YUM 源配置文件 在修改 YUM 源之前&#xff0c;建议备份原有的配置文件。通常&#xff0c;YUM 源的配置文件位于 /etc/yum.repos.d/ 目录下。例如&#xff0c;备份 CentOS 的默认 YUM 源配置文件&#xff1a; …...

http头部注入攻击

1.HTTP请求的组成部分​​ HTTP(HyperText Transfer Protocol)请求由 ​​请求行(Request Line)、请求头(Headers)、空行(Blank Line)和请求体(Request Body)​​ 组成。具体结构如下: ​​1. 请求行(Request Line)​​ 请求行是HTTP请求的第一行,包含三个部分…...

三类 Telegram 账号的风控差异分析与使用建议

在使用 Telegram 过程中&#xff0c;很多用户会遇到账号被限制、封禁、加群失败等问题。除了操作行为外&#xff0c;账号本身的注册方式、活跃时间、环境匹配程度也会直接影响风控等级。 本篇文章从账号风控角度出发&#xff0c;分析三类常见 Telegram 账号的特点与适用环境&am…...

Matlab | matlab中的点云处理详解

点云处理 ⚙️ **一、点云基础操作**🧹 **二、点云预处理**📊 **三、特征提取与分析**🔄 **四、点云配准(对齐点云)**🔷 **五、三维重建与应用**⚡️ **六、高级功能与性能优化**💎 **七、实战技巧与参数调优**📚 **学习资源**MATLAB 的点云处理能力主要依赖 Poi…...

【机试题解法笔记】寻找最大价值的矿堆

题目 给你一个由 0(空地)、1(银矿)、2(金矿) 组成的的地图&#xff0c;矿堆只能由上下左右相邻的金矿或银矿连接形成。超出地图范围可以认为是空地。 假设银矿价值 1&#xff0c;金矿价值 2&#xff0c;请你找出地图中最大价值的矿堆并输出该矿堆的价值。 输入描述 地图元素信…...

动态规划 熟悉30题 ---上

本来是要写那个二维动态规划嘛&#xff0c;但是我今天在问题时候&#xff0c;一个大佬就把他初一时候教练让他练dp的30题发出来了&#xff08;初一&#xff0c;啊虽然知道计算机这一专业&#xff0c;很多人从小就学了&#xff0c;但是我每次看到一些大佬从小学还是会很羡慕吧或…...

嵌入式学习笔记- freeRTOS 带FromISR后缀的函数

FreeRTOS中带FromISR后缀的函数 是用于中断的函数&#xff0c;它有两个特点 一个是无等待延时&#xff0c; 一个是无立刻触发任务切换&#xff0c; 那么 一 为什么中断中不能等待&#xff08;阻塞&#xff09;&#xff1f; 因为中断中等待的&#xff0c;一般都是任务给予的…...

Linux系统:ELF文件的定义与加载以及动静态链接

本节重点 ELF文件的概念与结构可执行文件&#xff0c;目标文件ELF格式的区别ELF文件的形成过程ELF文件的加载动态链接与静态链接动态库的编址与方法调用 一、ELF文件的概念与结构 1.1 文件概述 ELF&#xff08;Executable and Linkable Format&#xff09;即“可执行与可链…...

迷宫与陷阱--bfs+回路+剪枝

1.用bfs板子&#xff0c;同时会出现回路&#xff0c;但不能不用bo数组&#xff0c;要减去一部分没有用的回路 2.什么叫没有用的回路--因为我有无敌了&#xff0c;以前遇到的陷阱就能过了&#xff0c;那这就是有用的回路&#xff0c; 所以我记录&#xff08;x,y&#xff09;点…...

【国产化适配】如何选择高效合规的安全数据交换系统?

一、安全数据交换系统的核心价值与国产化需求 在数字化转型浪潮中&#xff0c;企业数据流动的频率与规模呈指数级增长&#xff0c;跨网文件传输已成为日常运营的刚需&#xff0c;所以安全数据交换系统也是企业必备的工具。然而&#xff0c;数据泄露事件频发、行业合规要求趋严…...