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

自学python笔记心得——元组,集合与字典

元组

一.基本定义

元组是不可变的序列,类似于列表,但创建后不能修改。

特点:1.可以存储不同类型的元素

2.元素可以重复、有序、不可以修改(支持索引访问、切片)

二.基本方法

count():统计某元素在元组中出现的次数

index():查找某个元素在元组中的索引位置(第一次出现的位置)

三.组包与解包

1.组包(Packing):将多个值合并到一个容器(元组、列表)中。

2.解包(Unpacking):将容器(元组、列表)解开成独立的元素,分别赋值给多个变量。

#组包 a,b,c,d=1,2,3,4 t=(a,b,c,d) print(t) #解包 d,*e,g=t print(d,e,g)

注:*的作用是将解包中剩余的元素赋值给这个元素,形成新的列表

案例:

现有两个变量,分别为:a = 10,b = 20,现需要将这两个变量值交换,然后输出到控制台

案例2.

根据提供的学生成绩单,完成如下需求:

1.计算每个学生的总分、各科平均分,然后一并输出出来。

2.统计各科成绩的最低分、最高分、平均分,并输出。

3.查找成绩优秀(平均分大于90)的学生,并输出。

sum_chines=0 student=( (1,"a",98,99,98), (2,"b",45,98,87), (3,"c",76,79,56), (4,"d",78,89,75), (5,"e",87,87,64), (6,"f",67,89,97) ) #将学生的信息录入到元组内 #计算每个学生的总分、各科平均分,然后一并输出出来 for i in student: sum=i[2]+i[3]+i[4] avg=sum/3 print(f"{i[1]}\t的总分为{sum}\t,平均分是{avg:.1f}") chines=[i[2] for i in student ] for i in chines: sum_chines+=i math=[i[3] for i in student ] english=[i[4] for i in student ] print(min(chines),max(chines),sum_chines/len(chines)) for i in student: sum=i[2]+i[3]+i[4] avg=sum/3 if avg>90: print(f"{i[1]}是优秀学生")

集合

一.基本定义

集合(set)是一种无序的、不可重复、可修改的数据容器。

二.常用方法

add(..) 添加元素到集合中s1.add('t')

remove(..) 移除集合中的指定元素(指定元素不存在将报错)s1.remove('t')

pop() 随机删除集合中的元素并返回e = s1.pop()

clear() 清空集合s1.clear()

difference() 求取两个集合的差集(包含在第一个集合但不包含在第二个集合的元素)s1.difference(s2)

union() 求取两个集合的并集s1.union(s2)

intersection() 求取两个集合的交集s1.intersection(s2)

& 交集

| 并集

- 差集

案例

根据提供的班级学生的选课情况,完成如下需求:

1.找出同时选修了数学和英语的学生

2.找出同时选修了所有三门课程的学生

3.找出选修语文,但是没有选修数学的学生

4.统计每一个学生选修的课程数量

chinese={"001","003","008","009","002"} english={"002","003","004","005"} maths={"002","007","006","008","005","00a4"} all_a=chinese & english print(all_a) all_all=chinese & english & maths & english print(all_all) not_m= chinese - maths print(not_m) id_name=chinese | english|maths all_name=[*chinese,*english,*maths] for i in id_name: print(f"{i}同学选了{all_name.count(i)}个学科")

注:利用解包的特点把三门学科的所有信息放进一个列表中,再用列表的count()看每个学生出现过几次就是每个学生选了几门科目

字典

一.基本定义

Python中的字典(dict),里面存储的是键值对(key: value)类型的数据,可以根据键(key)找到对应的值(value)。

二.基本格式

a={"001":1,"002":2,"003":3,"004":4,"005":5} #定义空字典 c = {} d= dict() print(a["001"]) print(a["002"]) print(a["003"])

注意:字典(dict)中的value可以是任何类型的数据,而key不能为可变类型(如:不能为 列表list、集合set、字典dict)。

三.字典的基本方法

案例:发一个购物车管理系统,实现商品信息的添加、修改、删除、查询功能。系统使用字典结构存储商品数据,通过控制台菜单与用户交互。具体功能如下:1.添加购物车:用户根据提示录入商品名称、以及该商品的价格、数量,保存该商品信息到购物车。2.修改购物车:要求用户输入要修改的购物车商品名称,然后再提示输入该商品的价格、数量,输入完成后修改该商品信息。3.删除购物车:要求用户输入要删除的购物车名称,根据名称删除购物车中的商品。4.查询购物车:将购物车中的商品信息展示出来

#购物车的定义格式应为{item:{value:,number}} #购物车程序可以惊醒多个功能应用match...case匹配 i_item={} while True: choice = int(input("请输入你想执行的操作\n")) match choice: case 1: # 录入商品的价格,数量名称 item_name = input("请输入商品的名称") item_value = input("请输入商品的价格") item_number = input("请输入商品的数量") if item_name in i_item: print("购物车中已存在该商品") else: i_item[item_name] = {"value": item_value, "number": item_number} print(i_item) case 2: item_name = input("请修改商品的名称") item_value = input("请修改商品的价格") item_number = input("请修改商品的数量") if item_name not in i_item: print("该商品不在购物车中") else: i_item[item_name] = {"value": item_value, "number": item_number} case 3: item_name = input("请删除商品的名称") if item_name not in i_item: print("该商品不在购物车中") else: del i_item[item_name] case 4: item_name = input("请查看商品的名称") if item_name not in i_item: print("该商品不在购物车中") else: print(i_item.get(item_name)) case 5: break

http://www.jsqmd.com/news/514701/

相关文章:

  • SpleeterGUI:零基础也能用的AI音乐分离神器
  • Linux实战攻防:从SSH渗透到木马控制
  • 贴片电阻丝印识别全指南:三位码、四位码、R码与E96编码解析
  • TensorFlow 2.15避坑指南:5个新手部署常见问题与一键解决
  • 从原理到实践:Halcon中矩形顶点坐标计算的数学推导与优化技巧
  • 2026给排水拉管施工服务推荐榜重资质经验:定向钻施工/小口径顶管施工/市政拉管施工/拉管施工价格/拉管施工原理/选择指南 - 优质品牌商家
  • 达梦数据库实战:如何高效管理用户权限与表空间(附常见问题解决方案)
  • 注入活人感降AI是什么意思?学会这个技巧AI检测直接过
  • RexUniNLU常见问题解决:模型加载慢、内存不足怎么办?
  • Valgrind避坑指南:从‘Conditional jump depends on uninitialised value‘到内存泄漏分类的完整解析
  • 智能医疗设备电机品牌推荐:无框电机、机器人关节电机、机器人电机、水下电机、电机定制、直流伺服电机、直流减速电机选择指南 - 优质品牌商家
  • Matlab小波变换实战:如何用dwt2()函数一键分解图像高频低频成分(附完整代码)
  • 终于有人把 AI Agent Skill 开发流程整明白了——Anthropic skill-creator 实战解读
  • [特殊字符]发现宝藏!这款开源简历编辑器太绝了✨
  • CHORD-X辅助教学应用:基于作业批改理念的战术动作AI评估
  • Navicat Premium 12 破解激活全攻略:一劳永逸的解决方案
  • 开源项目管理工具选型指南(2026年最新)
  • Nunchaku-flux-1-dev显存优化解析:RTX 3090/4090低显存稳定运行教程
  • 红外遥控硬件设计与NEC协议解码实战
  • Git Bash 详细配置+ComfyUI 开源仓库安装:从地狱到天堂、惆怅变快乐、沮丧转开心,我花了一晚上
  • HJ139 小红的01子序列计数(hard)
  • Transformer代码实现2:手搓词嵌入层和位置编码
  • Phi-3-vision-128k-instruct在嵌入式视觉系统中的角色与通信协议设计
  • adb微信降级(无需root)
  • YOLOFuse实战指南:如何训练自己的RGB+红外数据集
  • XSS-Labs靶场通关秘籍:从入门到精通的20种绕过技巧
  • yz-bijini-cosplayGPU算力优化:RTX 4090显存碎片治理与CPU卸载实践
  • Halcon实战:巧用emphasize算子提升工业视觉检测清晰度
  • FPGA远程烧录bit流的实现与优化
  • Chrome 119+ 新功能实测:鼠标悬停就能看哪个标签页在“吃”内存,附省电模式设置技巧