知识点
集合
集合(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] += 1else: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
否
添加元素
+、append、extend、insert
不可添加
a_dict[‘new_key’] = ‘value’
add、update
删除元素
del、remove、pop()、pop(1)、clear
不可删除
pop、popitem、clear
discard、remove、pop、clear
元素查找
index、count、in
in
a_dict[‘key’]
in
布尔真值
非空
非空
非空
非空
定义
列表(list)是有序的集合,可以存放不同数据类型的数据,并且list中的每个元素的都对应着一个索引来标记其位置,且索引从0开始。可以嵌套
tuple与list类似,不同之处在于tuple中的元素不能进行修改。而且tuple使用小括号(),list使用方括号[]。
dic字典是另一种可变的容器模型,且可存储任意类型对象。字典每个键值(key:value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}
set()函数是创建一个无序不重复元素集,可添加,删除数据,还可以计算交集、差集、并集等。