概述
1、关于集合
集合与列表、字典一样都是可变序列
集合是没有值value的字典
2、集合的创建
2.1 第一种创建方式:使用{}
s = {2,3,4,5,5,6,7,7}
#集合不允许重复,它会把重复的元素去掉
print(s)
输出结果:
{2, 3, 4, 5, 6, 7}
2.2 第二种创建方式:使用set()
s1 = set(range(6))
print(s1,type(s1))
输出结果:
{0, 1, 2, 3, 4, 5} <class ‘set’>
s2 = set([1,2,4,5,5,5,6,6])
#将列表转换为集合
print(s2,type(s1))
输出结果:
{1, 2, 4, 5, 6} <class ‘set’>
s3 = set((1,2,4,5,5,6,6,65))
#将元组转换为集合
#集合元素是无序的
print(s3,type(s1))
输出结果:
{1, 2, 65, 4, 5, 6} <class ‘set’>
s4 = set({15,22,74,25,25,6,6})
#将集合转换为集合
print(s4,type(s4))
输出结果:
{6, 22, 25, 74, 15} <class ‘set’>
s5 = set('python')
#集合元素是无序的
print(s5,type(s5))
输出结果:
{‘o’, ‘n’, ‘h’, ‘y’, ‘t’, ‘p’} <class ‘set’>
从以上结果可以看出,集合元素是无序的
3、定义一个空集合
s6 = {}
#是dict字典类型
print(s6,type(s6))
#{}定义出来的是字典,不可以直接使用花括号{}定义空集合
输出结果:
{} <class ‘dict’>
从输出结果可以看出,用花括号{}定义的是字典类型,因此不能用花括号{}直接定义集合
定义集合与前面所讲的列表、字典、元组不同,只有一种方法,就是使用内置函数set()
s7 = set()
#这样才可以定义一个空集合
print(s7,type(s7))
输出结果:
set() <class ‘set’>
4、集合的相关操作
4.1 集合元素的判断操作
s = {10,20,30,405,60}
print(10 in s)
print(10 not in s)
print(100 in s)
print(100 not in s)
输出结果:
True
False
False
True
4.2 集合元素的新增操作
4.2.1 调用add()方法,一次添加一个元素(无序地添加到集合中,不一定在末尾)
#调用add()方法,一次添加一个元素
print(s)
s.add(80)
print(s)
#无序的添加到集合中
输出结果:
{10, 20, 405, 60, 30}
{10, 80, 20, 405, 60, 30}
4.2.2 调用update()方法,至少添加一个元素(即,可添加多个元素)
#调用update()方法,至少添加一个元素(可添加多个元素)
print(s)
s.update([45,23,89])
print(s)
输出结果:
{10, 80, 20, 405, 60, 30}
{10, 45, 80, 20, 405, 23, 89, 60, 30}
print(s)
s.update((46,25,45))
print(s)
输出结果:
{10, 45, 80, 20, 405, 23, 89, 60, 30}
{10, 45, 46, 80, 20, 405, 25, 23, 89, 60, 30}
4.3 集合元素的删除操作
4.3.1 调用remove()方法
一次删除一个指定元素,如果指定的元素不存在抛出KeyError
#调用remove()方法,一次删除一个指定元素,如果指定的元素不存在抛出KeyError
print(s)
s.remove(405)
print(s)
#s.remove(100)
#不存在100,抛出异常 KeyError: 100
输出结果:
{10, 45, 46, 80, 20, 405, 25, 23, 89, 60, 30}
{10, 45, 46, 80, 20, 25, 23, 89, 60, 30}
4.3.2 调用discard()方法
一次删除一个指定元素,如果指定的元素不存在不会抛出异常
#调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不会抛出异常
print(s)
s.discard(100)
#不会抛出异常
print(s)
输出结果:
{10, 45, 46, 80, 20, 25, 23, 89, 60, 30}
{10, 45, 46, 80, 20, 25, 23, 89, 60, 30}
4.3.3 调用pop()方法
一次只删除一个任意元素(删谁不知道)
#调用pop()方法,一次只删除一个任意元素(删谁不知道)
print(s)
s.pop()
print(s)
s.pop()
print(s)
#s.pop(25)
#报错,pop不能指定参数
TypeError: pop() takes no arguments (1 given)
输出结果:
{10, 45, 46, 80, 20, 25, 23, 89, 60, 30}
{45, 46, 80, 20, 25, 23, 89, 60, 30}
{46, 80, 20, 25, 23, 89, 60, 30}
4.3.4 clear()清空
清空所有元素
#clear()清空
s.clear()
print(s)
输出结果:
set()
5、集合间的关系
5.1 两个集合是否相等:元素相同就相等
#两个集合是否相等:元素相同就相等
s = {10,20,30,40}
#元素的内容相同,集合就相等
s2 = {30,40,10,20}
print(s==s2)
print(s!=s2)
输出结果:
True
False
5.2 一个集合是否是另一个集合的子集 —— issubset()方法
#一个集合是否是另一个集合的子集
s1 = {10,20,30,40,50,60}
s2 = {10,20,30}
s3 = {10,20,90}
print(s2.issubset(s1))
#意思是s2是s1的子集吗
print(s3.issubset(s1))
输出结果:
True
False
5.3 一个集合是否是另一个集合的超集 —— issuperset()方法
如果B是A的子集,那么A就是B的超集
#一个集合是否是另一个集合的超集
#如果B是A的子集,那么A就是B的超集
s1 = {10,20,30,40,50,60}
s2 = {10,20,30}
s3 = {10,20,90}
print(s1.issuperset(s2))
#意思是s1是s2的超集吗
print(s1.issuperset(s3))
输出结果:
True
False
5.4 两个集合是否没有交集 —— isdisjoint()方法
#两个集合是否没有交集
#可以调用isdisjoint判断
print(s2.isdisjoint(s3))
#False 不是没有交集,那就是有交集
s4 = {100,200,300}
print(s2.isdisjoint(s4))
#True 是没有交集,那就是没有交集
输出结果:
False
True
6、集合的数学操作
6.1 交集操作 ——intersection()或 &
s1 = {10,20,30,40}
s2 = {20,30,40,50,60}
#方法一:内置函数intersection
print(s1.intersection(s2))
#方法二:&符号
print(s1 & s2)
输出结果:
{40, 20, 30}
{40, 20, 30}
6.2 并集操作 ——union()或 |
#方法一:内置函数union
print(s1.union(s2))
#方法二:|符号
print(s1 | s2)
输出结果:
{40, 10, 50, 20, 60, 30}
{40, 10, 50, 20, 60, 30}
6.3 差集操作 ——difference()或 -
#就是作减法
print(s1.difference(s2))
#法一
print(s1 - s2)
#法二
输出结果:
{10}
{10}
6.4 对称差集 ——symmetric_difference()或 ^
#两个集合去掉中间重合的30 40 50,就剩10 50 60
print(s1.symmetric_difference(s2))
#法一
print(s1 ^ s2)
#法二
输出结果:
{50, 10, 60}
{50, 10, 60}
7、集合生成式
与列表生成式相同,将[]改为{}即可
没有元组生成式(不可变序列)
#列表生成式
lst = [i*i
for i in range(10)]
#数据是有序的
print(lst)
#集合生成式
s = {i*i
for i inn range(10)}
#数据是无序的
print(s)
输出结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}
最后
以上就是飞快流沙为你收集整理的Python学习笔记6——集合的全部内容,希望文章能够帮你解决Python学习笔记6——集合所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复