python--实验5 字典与集合

知识点

集合 

集合(Set)在Python中是一种基本的数据结构,用于存储无序且不重复的元素。以下是关于集合的详细介绍:

集合的定义和特点


无序性:集合中的元素没有特定的顺序。
不重复性:集合中的元素都是唯一的,不允许有重复的元素。

创建集合


使用 `set()` 函数创建集合。

set_demo = {100, 'word', 10.5}
set_demo


使用 `{}` 创建集合时需要小心,因为 `{}` 通常用于创建空字典,除非大括号内包含元素。

 

set_one = set('tuple')      
set_one
set_two = set((13, 15, 17, 19))

 集合的常见操作


set_demo= {10, 151, 33, 98, 57}
set_demo.add(61)
print(set_demo)
set_demo.remove(151)                   
print(set_demo)
set_demo.pop()
print(set_demo)
set_demo.clear()
print(set_demo)

集合运算与更新

集合的属性和方法


`isdisjoint(T)` 如果集合S和T没有相同的元素,则返回True。
`len(S)` 返回集合S中元素的数量。

示例代码


# 创建集合
set_demo = {100, 'word', 10.5}

# 添加元素
set_demo.add(61)

# 删除元素
set_demo.remove(151)

# 随机移除元素
set_demo.pop()

# 清空集合
set_demo.clear()

字典

字典(Dictionary)在Python中是一种可变的容器模型,它存储键值对(key-value pairs),其中每个键是唯一的。

字典的定义


字典是Python中唯一的内建映射类型。
它允许存储任意类型的对象,包括但不限于数字、字符串、元组、列表等。

字典的键和值


键:必须是不可变类型,如数字、字符串或元组。键是唯一的,不能有重复。
值:可以是任何数据类型,包括另一个字典。

字典的创建和访问


使用 `{}` 创建字典,例如 `my_dict = {'key1': 'value1', 'key2': 'value2'}`。
访问字典中的值使用 `字典变量[键]` 的形式。

>>> users={'A': '123', 'B': '135', 'C': '680'}
>>> users['C']      	# 访问键对应的值
>>> users['A'] = '1*5@'    # 修改键对应的值

字典的常见操作
 

字典的遍历


遍历键:`for key in 字典变量.keys():`。

for key in a.keys():
    print(key)


遍历value值:`for value in 字典变量.values():`。

for value in a.values():
    print(value)

遍历key值,value值

#方式一
for key in a:
    print(key,a[key])
#方式二
for key in a.keys():
    print(key,a[key])
#方式三
for key,value in a.items():
    print(key,value)


遍历字典项:`for key, value in 字典变量.items():`。

for kv in a.items():
    print(kv)
字典的高级操作


使用 `in` 关键字检查键是否存在于字典中。
使用 `min(字典变量)` 和 `max(字典变量)` 来获取字典中最小和最大键所对应的值,这要求键是可比较的。

示例代码

# 创建字典
users = {'A': '123', 'B': '135', 'C': '680'}

# 访问键对应的值
print(users['C'])

# 修改键对应的值
users['A'] = '1*5@'

# 增加字典元素
contacts = {'Tom': '123456', 'Jerry': '456789'}
contacts['Jane'] = '789012'

# 遍历字典
for key in contacts:
    print(key, contacts[key])

# 使用字典方法
keys = contacts.keys()
values = contacts.values()
items = contacts.items()

# 清空字典
contacts.clear()

 

实验7 字典与集合

  • 实验目的

1.熟练python编辑器pycharm的使用;

2.掌握python中唯一的映射类型;

3.掌握python的字典与集合的操作方法;

  • 实验环境

本次实验需使用实验室提供的Windows主机环境+pycharm

  • 实验内容
  • 基础题从键盘输入10个整数存入序列p中,其中凡相同的数在p中只存入第一次出现的数,其余的都被剔除。

分析:序列p是一个包含不重复元素序列,此时p的类型定义为集合更合适。

代码:

# 创建一个空集合用于存储输入的整数
p = set()

# 循环10次,每次从键盘接收一个整数
while len(p) < 10:
    try:
        # 从键盘输入一个整数
        number = int(input("请输入一个整数(确保输入10个不同的整数):"))
        # 将整数添加到集合p中,如果数字已存在,则不会重复添加
        p.add(number)
    except ValueError:
        # 如果输入的不是整数,提示错误并重新输入
        print("输入错误,请输入一个有效的整数。")

# 打印最终的集合p
print("输入的不重复整数序列为:", p)
  • 基础题小明想在学校中请一些同学一起做一项问卷调查,为了实验的客观

性他先用计算机生成了N个1~1000之间的随机整数(N<=1000),N是用户输入的,对于其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的学生的号,然后再把这些数从小到大排序,按照排好的顺序去找同学做调查,请你协助小明完成“去重”与排序工作。

程序运行效果如下图所示:

 

提示:sorted() 函数对所有可迭代的对象进行排序操作。

代码:

import random

# 用户输入N
N = int(input("请输入要生成的随机整数的数量N(N <= 1000):"))

# 检查N是否在合理范围内
if N <= 0 or N > 1000:
    print("输入的N超出了允许的范围。")
else:
    # 生成N个随机整数,并使用集合去除重复
    random_numbers = set()
    while len(random_numbers) < N:
        random_numbers.add(random.randint(1, 1000))

    # 对生成的随机数进行排序
    sorted_numbers = sorted(random_numbers)

    # 打印结果
    print("去重并排序后的随机数序列为:", sorted_numbers)
    # 按照排序后的序列去邀请同学做问卷调查
    for number in sorted_numbers:
        print(f"邀请学号为{number}的同学进行问卷调查。")
  • 基础题有英文句子“Anything you think is worth doing is worth doing”,程序打印出每个单词及其重复的次数。

提示:此处认为单词之间以空格为分隔符,并且不包含标点符号。

程序运行效果如下图所示:

代码:

# 英文句子
sentence = "Anything you think is worth doing is worth doing"

# 将句子转换为小写,以避免大小写影响单词计数
sentence = sentence.lower()

# 使用空格分割句子为单词列表
words = sentence.split()

# 创建一个空字典来存储单词及其出现次数
word_count = {}

# 遍历单词列表,统计每个单词的出现次数
for word in words:
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1

# 打印每个单词及其出现次数
for word, count in word_count.items():
    print(f"单词 '{word}' 出现了 {count} 次。")
  • 基础题数字重复统计:

1) 随机生成100个整数

2) 数字范围[20,30]

3) 升序输出所有不同的数字及其每个数字的重复次数。

程序运行效果如下图所示:

代码:

import random

# 设置随机数生成的范围和数量
range_start = 20
range_end = 30
number_of_integers = 100

# 生成100个随机整数,并去除重复数字
unique_numbers = set()
while len(unique_numbers) < number_of_integers:
    unique_numbers.add(random.randint(range_start, range_end))

# 计算每个数字的出现次数
number_counts = {}
for number in unique_numbers:
    number_counts[number] = number_counts.get(number, 0) + 1

# 对数字进行排序并打印每个数字及其出现次数
for number in sorted(number_counts):
    print(f"数字 {number} 出现了 {number_counts[number]} 次。")

总结

直接把两次实验涉及到的数据类型总结。

数据类型

列表(list)

元组(tuple)

字典(dictionary)

集合(set)

表示

[]

()

{}

{}

是否有序

有序

有序

无序

无序

是否读写

读写

只读

读写

读写(覆盖)

元素可修改

空定义

a_list = []

a_tuple = ()

a_dict = {}

a_set =set();

<br>not_sure = {} 空字典

下标访问

a_list[0] = 23

a_tuple[0]

a_dict[‘age’] = 30

添加元素

+appendextendinsert

不可添加

a_dict[new_key] = value

addupdate

删除元素

delremovepop()pop(1)clear

不可删除

poppopitemclear

discardremovepopclear

元素查找

indexcountin

in

a_dict[key]

in

布尔真值

非空

非空

非空

非空

定义

列表(list)是有序的集合,可以存放不同数据类型的数据,并且list中的每个元素的都对应着一个索引来标记其位置,且索引从0开始。可以嵌套

tuplelist类似,不同之处在于tuple中的元素不能进行修改。而且tuple使用小括号()list使用方括号[]

dic字典是另一种可变的容器模型,且可存储任意类型对象。字典每个键值(key:value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}

set()函数是创建一个无序不重复元素集,可添加,删除数据,还可以计算交集、差集、并集等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL3.3_C++_Windows(28)

Demo演示 demo 视差贴图 视差/高度/位移贴图&#xff08;黑--白&#xff09;&#xff1a;和法线贴图一样视差贴图能够极大提升表面细节&#xff0c;使之具有深度感。第一种思路&#xff08;置换顶点&#xff09;&#xff1a;对于一个quad &#xff0c;分成约1000个顶点&#x…

Fastapi在docekr中进行部署之后,uvicorn占用的CPU非常高

前一段接点小活&#xff0c;做点开发&#xff0c;顺便学了学FASTAPI框架&#xff0c;对比flask据说能好那么一些&#xff0c;至少并发什么的不用研究其他的asgi什么的&#xff0c;毕竟不是专业开发&#xff0c;能少研究一个东西就省了很多的事。 但是部署的过程中突然之间在do…

vue3+ts 重复参数提取成方法多处调用以及字段无值时不传字段给后端

参数提取前的写法&#xff0c;此写法值为空的时候也会传空字段给后端 会把无值的空字段传给后端 修改后的写法&#xff0c;不会把没有值的字段传给后端 // 列表和导出需要传给后端的公共参数&#xff08;加 || undefined即可过滤空字段&#xff09; const getCurentParam () …

HackTheBox--BoardLight

BoardLight 测试过程 1 信息收集 NMAP端口扫描 端口扫描开放 22、80 端口 80端口测试 # 添加 boardLight.htb 到hosts文件 echo "10.10.11.11 boardLight.htb" | sudo tee -a /etc/hosts检查网页源代码&#xff0c;发现 board.htb # 添加 board.htb 到 hosts 文…

LeetCode-刷题记录-前缀和合集(本篇blog会持续更新哦~)

一、前缀和&#xff08;Prefix Sum&#xff09;算法概述 前缀和算法通过预先计算数组的累加和&#xff0c;可以在常数时间内回答多个区间和相关的查询问题&#xff0c;是解决子数组和问题中的重要工具。 它的基本思想是通过预先计算和存储数组的前缀和&#xff0c;可以在 O(1)…

免费压缩pdf文件大小软件收费吗?pdf如何压缩文件大小?12款压缩应用推荐!

在数字化时代&#xff0c;PDF文件因其跨平台、格式统一的特点而广受欢迎。然而&#xff0c;随着文件内容的增加&#xff0c;PDF文件的大小也逐渐增大&#xff0c;给存储和传输带来了诸多不便。因此&#xff0c;寻找一款合适的PDF压缩软件成为了许多用户的需求。本文将详细介绍1…

网络祭祀人物微信小程序模板源码

模板介绍 手机端网络祭祀&#xff0c;在线祭祀&#xff0c;创建纪念历史人物小程序前端模板下载。包含&#xff1a;人物列表、详情、创建人物、个人中心等等页面。 图片演示 网络祭祀人物微信小程序模板源码

windows实现Grafana+Loki+loki4j轻量级日志系统,告别沉重的ELK

文章目录 Loki下载Grafana下载安装Loki添加Loki数据源springboot日志推送 Loki下载 下载地址&#xff1a;https://github.com/grafana/loki/releases/ 找到loki-windows-amd64.exe.zip点击开始下载&#xff0c;我这里下载的2.9.9版本 Grafana下载 下载地址&#xff1a;http…

Centos7离线安装ElasticSearch7.4.2

一、官网下载相关的安装包 ElasticSearch7.4.2&#xff1a; elasticsearch-7.4.2-linux-x86_64.tar.gz 下载中文分词器&#xff1a; elasticsearch-analysis-ik-7.4.2.zip 二、上传解压文件到服务器 上传到目录&#xff1a;/home/data/elasticsearch 解压文件&#xff1…

如何找到关于目标检测小论文的创新点

深度学习目标检测的小论文创新点 数据集预处理创新 主要包括图像增强、图像去雾、图像融合和图像降噪 例子: 比如在研究方向是检测晚上或者天气不好时骑电动车的人是否佩戴了安全头盔。一般的检测可能只能检测到正常天气情况下的骑电动车的人&#xff0c;而对于大雾天气和晚上…

【教程】计算机组成原理

一、计算机系统概述 1.1 计算机系统组成 1.1.1 计算机的硬件系统结构 硬件系统由运算器、存储器、控制器、输入设备和输出设备5个部件组成。 五大部件的基本功能&#xff1a; 运算器&#xff1a; 完成算术和逻辑运算&#xff1b;控制器&#xff1a; 用来控制、执行程序&…

SHARPNESS-AWARE MINIMIZATION FOR EFFICIENTLY IMPROVING GENERALIZATION--论文笔记

论文笔记 资料 1.代码地址 https://github.com/google-research/sam https://github.com/davda54/sam 2.论文地址 https://arxiv.org/abs/2010.01412 3.数据集地址 论文摘要的翻译 在当今严重过度参数化的模型中&#xff0c;训练损失的值很难保证模型的泛化能力。事实上…

STM32 - SPI硬件外设

配合我的上一篇SPI ​​​​​​通信 协议-CSDN博客一起理解更佳&#xff0c;本文后看 SPI 是由摩托罗拉(Motorola)公司开发的全双工同步串行总线&#xff0c;是 MCU 和外围设备之间进行通信的同步串行端口。主要应用在EEPROM、Flash、RTC、ADC、网络控制器、MCU、DSP以及数字信…

Sleuth--链路追踪

1 链路追踪介绍 在大型系统的微服务化构建中&#xff0c;一个系统被拆分成了许多模块。这些模块负责不同的功能&#xff0c;组合成 系统&#xff0c;最终可以提供丰富的功能。在这种架构中&#xff0c;一次请求往往需要涉及到多个服务。互联网应用构建 在不同的软件模块集上&am…

MySQL Buffer Pool

总结自&#xff1a;小林coding&#xff0c;bojiangzhou 虽然说 MySQL 的数据是存储在磁盘里的&#xff0c;但是也不能每次都从磁盘里面读取数据&#xff0c;这样性能是极差的。 要想提升查询性能&#xff0c;加个缓存就行了嘛。所以&#xff0c;当数据从磁盘中取出后&#xff…

Vue3项目打包优化

前言 本文介绍在实际项目中进行打包优化过程 目前评分 good npm install web-vitals在App.vue加入如下代码测试网页性能指标 import { onLCP, onINP, onCLS, onFCP, onTTFP } from web-vitals/attributiononCLS(console.log) onINP(console.log) onLCP(console.log) onFCP(…

江协科技51单片机学习- p25 无源蜂鸣器

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

C语言 | Leetcode C语言题解之第223题矩形面积

题目&#xff1a; 题解&#xff1a; int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth fmin(ax2, bx2) - fmax(ax1, bx1), overlapHei…

气膜建筑如何在文化旅游行业中应用—轻空间

一、气膜建筑简介 气膜建筑是一种新型建筑形式&#xff0c;其主要结构由高强度膜材、空气支撑系统和固定系统组成。通过不断向膜体内部充气&#xff0c;使其形成稳定的内部压力来支撑整个建筑结构。气膜建筑因其建设速度快、成本相对较低、环保节能等优点&#xff0c;近年来在各…

DDR3 (四)

1 DDR3 8倍预取 DDR3相比DDR2外部IO时钟又提高了一倍&#xff0c;因此DDR3外部IO时钟是内核时钟的4倍&#xff0c;再加上双沿采样&#xff0c;因此DDR3可以实现8倍预取 2 DDR3 芯片位宽 DDR3使用8倍预取技术&#xff0c;指的是芯片位宽&#xff08;DQ数据线位宽&#xff09…