python之集合相关

1.概况

是无序的数据结构

集合内的个体统称为元素,每个元素不可重复

所有元素被放在大括号里面,元素之间通过逗号分隔

集合对象是一组无序的可哈希的值,集合元素是不可变的数据类型

2.定义集合

使用大括号语法

基本语法:

        {元素1,元素2,元素3,元素4............元素n}

        传递重复的值会自动去重

a = {"a","b",3,4,5}
print(a)
使用set()函数

创建空集合的时候使用set()函数创建,不能使用大括号,{}是创建的字典

print(set(["a","c","f"]))
print(set({"a":4,"f":8}))
print(set([1,5,5,6,5,5]))
print(set())

3.删除集合

只是删除变量对集合的引用关系,如果还有其余的对他进行引用,仍然有效

a = {"a","v","d"}
print(a)
del a 
print(a)

4. 访问集合

使用in或者not in检测是否存在集合元素,但是不能直接访问集合元素

使用len()函数获取集合的长度(元素的个数)

使用for来迭代集合的元素

间接访问,把集合转换成元组或列表,通过下标访问

5.添加元素

1.使用add()方法
a = set(range(20))
print(a)
a.add(100)
print(a)

如果该元素已存在,则不做任何操作

a = set(range(20))
print(a)
a.add(10)
print(a)
2.使用update()方法
a = set(range(20))
print(a)
#添加一个字符串
a.update("python")
print(a)
#添加一个列表
a.update([111,222,333])
print(a)
#添加一个元组,必须要加一个逗号,不然被判断为字符串
a.update(("sign",))
print(a)
#添加一个集合
a.update({"ewioh"})
print(a)

6.删除元素

1.使用remove()  

可移除指定元素,没有返回值,如果元素不存在则抛出异常

a = set(range(20))
print(a)
a.remove(1)
print(a)

如果删除的元素不存在,则抛出异常

a = set(range(20))
print(a)
a.remove(100)
print(a)
2.使用discard()

可移除指定元素,用法与remove()相同,元素不存在不执行删除操作

a = set(range(20))
print(a)
a.discard(10)
print(a)
a.discard(100)
print(a)
3.使用clear()

清空集合元素

a = set(range(20))
print(a)
a.clear()
print(a)
4.使用pop()

随机删除集合元素,并返回删除的集合元素

a = set(range(20))
l = []
#由于集合的上度是在变化的,所以不能直接访问集合
for i in range(len(a)):
    #将删除的集合添加到列表中
    l.append(a.pop())
print(l)

7.检测元素

使用in或not  in

a = {1,2,3}
if "a" in  a:
    a.remove("a")
if "a" not in a:
    a.add("a")
print(a)

8.合并集合

set1.update(set2)
a = {1,2,3}
b = {("python")}
a.update(b)
print(a)

9.复制集合

set.copy()
a = {1,2,3}
b = a.copy()
print(b)

使用copy模块
import  copy
a = {1,2,3}
b = copy.copy(a)
print(b)

10.集合推导式

语法格式:

        {表达式   for  变量  in 可迭代的对象}

        {表达式   for  变量  in  可迭代的对象  if  条件表达式}

l = [1,3,446,6,67,3]
b = {i*2 for i in l}
print(b)

11.集合并集

合集,把两个集合合并在一起,形成一个新的集合

1.使用|运算符

语法格式:

        set1|set2

a = {1,2,3}
b = {3,4,5}
c = a|b
print(c)
2.使用union()方法 

语法格式:

        合集= set.union(set1)

a = {1,2,3}
b = {3,4,5}
c = a.union(b)
print(c)

3.使用union ()函数

合集= set.union(set1,set2,set3,..........setn)

a = {1,2,3}
b = {3,4,5}
c = set.union(a,b)
print(c)

 12.集合交集

计算两个集合共有的元素,也就是两个集合重复的元素

1.使用&运算符

语法格式:

        并集 = set1&set2

a = {2,3,4,5}
b = {4,5,6}
c = {5,6,7,8}
d = a&b&c
print(d)
2.使用intersection()方法

语法格式:

         并集 = set1.intersection(set2)

a = {2,3,4,5}
b = {4,5,6}
c = {5,6,7,8}
d = a.intersection(b,c)
print(d)
3.使用set.intersection()函数

语法格式:

        并集 = set.intersection(set1,set2,set3.........setn)

a = {2,3,4,5}
b = {4,5,6}
c = {5,6,7,8}
d = set.intersection(a,b,c)
print(d)
4.使用set.intersection_update()方法

语法格式:

         并集 = set1.intersection_update(set2,set2,set3.........setn)

a = {2,3,4,5}
b = {4,5,6}
c = {5,6,7,8}
a.intersection_update(b,c)
print(a)

13.差集

由所有属于集合A,但是不属于集合B的元素组成的集合,简单说就是A与B的差集

1.使用-运算符

语法格式:

        差集 = set1 - set2

a = {1,2,3,4,5}
b = {2,3,5,7,8}
c = a - b
print(c)
2.使用difference()方法

语法格式:

        差集 = set1.difference(set2)

        返回一个新的集合

a = {1,2,3,4,5}
b = {2,3,5,7,8}
c = a.difference(b)
print(c)
3.使用difference_update()方法

语法格式:

         set1.difference_update(set2)

        没有返回结果,只是在原来的集合上面进行修改

a = {1,2,3,4,5}
b = {2,3,5,7,8}
a.difference_update(b)
print(a)

14.对称差集

由A与B的差集和B与A的差集的合集,简单说就是A和B非公有的元素集合

1.使用-运算符

语法格式:

       对称差集 = set1 ^ set2

a = {1,2,3,4,5}
b = {2,3,5,7,8}
c = a ^ b
print(c)
2.使用symmetric_difference()方法

语法格式:

        差集 = set1.symmetric_difference(set2)

        返回一个新的集合

a = {1,2,3,4,5}
b = {2,3,5,7,8}
c = a.symmetric_difference(b)
print(c)
3.使用symmetric_difference_update()方法

语法格式:

         set1.symmetric_difference_update(set2)

        没有返回结果,只是在原来的集合上面进行修改

a = {1,2,3,4,5}
b = {2,3,5,7,8}
a.symmetric_difference_update(b)
print(a)

15.包含关系

1.真父集   >

A > B    

如果集合B中任意一个元素都是集合A的元素,且集合A的长度大于集合B的长度,那么集合A就是集合B的真父集

2.父集  >=

A >= B    等价于  A.issuperset(B)

如果集合B中任意一个元素都是集合A的元素,集合A的长度可以等于集合B的长度,那么集合A就是集合B的父集

3.真子集   <

A < B    

如果集合A中任意一个元素都是集合B的元素,且集合B的长度大于集合A的长度,那么集合A就是集合B的真子集

4.子集   =<   等价于    A.issubset(B)

A =< B

如果集合A中任意一个元素都是集合B的元素,集合A的长度可以等于集合B的长度,那么集合A就是集合B的子集

16.不包含关系

 !=    A !=B    等价于   A.isdisjoint(B)

如果集合A中的任意一个元素都不是集合B的元素,且集合B中的任意一个元素都不是集合A中的元素,那么集合A与集合B是不相交,或者说是不包含

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值