一.集合的定义:
集合是一个无序的不重复元素序列,可以使用大括号{}或者set()函数创建集合。
1.注意:
创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典。
parame = {value01, value02,........}
或者
set(value)
2.特点:
1.没有重复
2.无序的(每个元素的顺序不是固定,每次打印顺序都会变化)
3.没有下标
3.列表转集合时:
将列表转成一个集合时,会自动删除重复的元素,这跟集合的定义有关,还会自动排序
例子:
list1 = [1, 1, 3, 2, 6, 8, 4, 23, ]
set2 = set(list1)
print(set2) # -----> {1, 2, 3, 4, 6, 8, 23}
二.集合元素的添加移除:
1.添加:
关键字:
add
格式及功能:
set.add(value) # value是要添加的元素名称
例子我们就不举了,太简单了。既然讲了添加了,干脆把融合一起讲了吧。
2.融合:
关键字:
update
这个集合融合的关键字和字典的是同一个哟!
格式功能啥的,就不讲了。直接举例
set6 = set() # 空集合
set1 = set()
set6.add('三体')
set6.add('盗墓笔记')
set1.update(set6)
print(set1)
print(set6)
3.移除:
关键字:
set.remove(元素名)
set.discard(元素名) 与remove不同的是,即使找不到要删除的元素,也不会报错
del 因为集合既没有下标,也没有key,所以只能用来删除整个集合
set.clear() 清空集合地所有元素。
set.pop() 因为集合没有下标,所以pop里面就不能填参数了,效果就是随机删除集合里面的一个元素
这里面也就pop有些不同了,那我们就专门举个例子来看看
b = {1, 3, 44, 5, 5, 6, 66, 4}
b.pop()
print(b)
{66, 4, 44, 5, 6, 1, 3} # 第一次打印效果
{1, 3, 44, 5, 5, 66, 4} # 第二次打印效果
{1, 44, 5, 6, 66, 3, 5} # 第三次打印效果
从打印结果,我们可以看到除了顺序变了,每次都消失了不同的数字。这就是pop在集合中与在其它数据类型中的不同之处。
三.交集,并集,差集:
作为集合,我们在高中就知道有集合,就有交集,并集,差集。现在我们就来了解了解.
1.关键字以及它们的简化符号:
交集(intersection) 简化符号:&
并集(union) 简化符号:|
差集(difference ) 简化符号:-
例子:
set2 = {1, 3, 3, 344, 23, 23, 44, 234, 3}
set3 = {12, 123, 2, 412, 3, 423, 42, 3, 42}
a = set2.intersection(set3) # 打印set2中与set3相同的元素
print(a)
print(set2 & set3)
a = set2.union(set3) # 打印两个集合
print(a)
print(set2 | set3)
a = set2.difference(set3) # 打印set2中与set3不同的元素
print(a)
print(set2 - set3)
四.验证码生成器:
要求: 产生5组不允许重复,由字母和数字组成的4位验证码
import random
b = '53463541567987896963000000003546weffwe' # 验证码的来源
a = set() # 验证码的容器
f = '' # 这也是验证码变成字符串类型后的容器
n = 0 # 计算有几个验证码了
while True:
a.add(b[random.randint(0, len(b)-1)]) # 开始产生验证码
if len(a) == 4:
for i in range(4): # 将验证码转换成字符串类型
g = list(a)[i]
f += g
print(str(f))
f = ''
a.clear()
n += 1
elif n == 5:
break
五.书籍管理系统:
要求:1.可以添加三本书 2.不能添加同名书籍 3.信息得有书名,作者,价格
books = [] # 创建书架
n = -1
while len(books) < 3: # 看是否有三本,没有就添加
d = {'书名': input('请输入书名:'), '作者': input('请输入作者:'), '价格': input('请输入价格:')} # 开始添加书
books.append(d)
e = []
n += 1
for i in books: # 查看是否重复
b = i['书名']
e.append(b)
if e.count(d['书名']) >= 2: # 不重复继续添加,重复就重新输入
books.pop(n)
print('该书籍已存在,请输入其它书籍')
break
print(books)