我想当第一

本节内容:

一.集合基操

可以使用{}定义集合;
可以使用set()进行集合的定义;
使用集合推导式完成集合的定义

_#定义集合

_vars = {123,123,3.14,‘abc’,(1,2,3)}
print(vars)

注意:
1.集合中的元素是无序的
2.集合中的元素不能重复
3.True在集合中表示1,False表示0.和数字只能存在一个

#检测集合中的值
_res = ‘abc’ in vars
print(res)
#获取集合中元素的个数
res =len(vars)
print(res)
#集合的遍历
for i in vars:
print(i)
#向列表中追加元素
res = vars.add(‘de’)
print(res)
print(vars)
#指定删除的元素-返回None,不存在则报错
res = vars.remove(‘de’)
print(vars)
#指定删除的元素,不存在也不会报错
res = vars.discard(‘dddd’)
#clear()清空集合
vars.clear()
print(vars)
#更新集合-添加集合中的所有非重复元素
_vars.update({555})
print(vars)

二.冰冻集合

#冰冻集合
‘’’
语法:只能使用frozenset()函数进行定义
1.一经定义不可修改
2.冰冻集合只能做集合相关的运算
3.可以将其他任何类型的容器数据转换为冰冻集合
‘’’
#定义
_vars = frozenset({1,‘a’,2,3})
print(vars)
#遍历
_for i in vars:
print(i)
关于冰冻集合了解即可

三.集合推导式

_#1)普通推导式varset = {1,2,3,4}
newset = {i<<1 **for **i **in **varset}
print(newset)

_#2)带有条件表达式的推导式newset = {i<<1 **for **i **in **varset **if **i%2 == 0}
print(newset)

#3)带有多循环的集合推导式
#普通方法
_var1 = {1,2,3}
var2 = {4,5,6}
newset = set()
for i in var1:
for j in var2:
newset.add(i+j)
print(newset)
#集合推导式_
newset = {i+j for i in var1 for j in var2}
print(newset)

_#4)带条件表达式的多循环集合表达式newset = {i+j for i in var1 for j in var2 if i %2 == 0 and j %2 == 0}
print(newset)

四.集合运算

交集
& set.intersection() set.intersection_update() 共有的
并集

| union() update() 合并并去重
差集

- difference() difference_update() s1对s2对差集:s1有而s2没有的;反之亦然
对称差集
^ symmetric_difference() symmetric_difference_update() 去掉两个集合都有的元素

1.符号运算

#求两个集合交集 &res = vars1 & vars2
print(res)
#求并集,去重 |res = vars1|vars2
print(res)
#求差集 -res = vars1 - vars2
print(res)
#vars1有,而vars2没有
res = vars2 - vars1
print(res)
#vars2有,而vars1没有
#对称差集 ^res = vars1 ^ vars2
print(res)

2.函数运算

#交集运算函数 set.intersection() set.intersection_update()res = vars1.intersection(vars2)
print(res)
#返回交集的结果 新集合

res = vars1.intersection_update(vars2)
print(res)
#没有返回值
print(vars1) #计算交集并赋值给第一个集合

并集运算函数 union() update()res = vars1.union(vars2)
print(res) _#返回并集结果,新的集合

res = vars1.update(vars2)
print(res)
#没有返回值
print(vars1) #求并集并且把结果赋值给第一个集合

差集运算 difference() difference_update()_res = vars1.difference(vars2)
print(res)
#返回差集结果,新的集合

res = vars1.difference_update(vars2)
print(res)
#没有返回值
print(vars1) #求差集并且把结果赋值给第一个集合

对称差集 symmetric_difference() symmetric_difference_update()_res = vars1.symmetric_difference(vars2)
print(res)
#返回对称差集结果,新的集合

res = vars2.symmetric_difference_update(vars2)
print(res)
#没有返回值
print(vars1) #求对称差集并且把结果赋值给第一个集合

检测超集和子集vars1 = {1,2,3,4,5}
vars2 = {1,2,3}

_#issuperset()检测是否为超集res = vars1.issuperset(vars2)
print(res)

_#issubset()检测是否为子集res = vars2.issubset(vars1)
print(res)