Python_集合

集合(set)

  1. 不同元素(无重复)
  2. 无序
  3. 元素必须是不可变类型的对象,集合本身是可变类型。

-作用:去重;关系测试,测试两组数据之间的交集、并集、差集等关系。

test1 = [1,2,'a','b']
Set_test_1 = set(test1)
print(Set_test1)          # 输出:{'b',1,2,'a'}
Set_test_2 = set('hello world')
print(Set_test_2)         # 输出:{'h',' ','o','l','e','w','r','d'}
  • 集合的分类:可变集合、不可变集合

    • 可变集合set:可添加和删除元素,非可哈希的,不同用作字典的键,也不可用于其他集合的元素。
    • 不可变集合frozenset:与上恰恰相反。
      可变集合做字典键,失败
  • 集合的相关操作

#1.创建集合,集合没有自己的语法格式,所以只能通过set()和frozenset()方法创建
    s_one = set('your')
    s_two = frozenset('name')
    print(s_one) #{'o', 'y', 'u', 'r'}  <class 'set'>
    print(s_two) #{'a', 'n', 'm', 'e'}  <class 'frozenset'>

#2.访问集合,集合无法切片,也没有键存在。所以只能采用循环遍历或者用in,not in来访问或判断集合元素。
    s_one = set('your')
    for i in s_one:
        print(i)

    s_two = set('name')
    print('a' in s_two)
    print('b' in s_two)
#3.更新集合。
    s_one.add('hh')        #作为一个元素添加进去
    print(s_one)           #{'u', 'o', 'r', 'hh', 'y'}
    s_one.update('abc')    #添加多个元素
    print(s_one)           #{'u', 'o', 'r', 'c', 'b', 'hh', 'y', 'a'}
    s_one.remove('hh')     #删除一个元素
    #del:删除集合本身
  • 集合之间的关系运算

    1. 子集。为某个集合中的部分集合,使用 <issubset()方法完成。

    2. 并集。一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。使用 |union()方法完成操作。

    3. 交集。集合A和集合B的交集是指两集合都有的元素的集合。使用 &或者intersection()方法完成。

    4. 差集。集合A与集合B的差集是所有属于A且不属于B的集合。使用 -difference()方法完成。
    5. 对称差。两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。使用 ^ 或者symmetric_difference()方法完成。
# 子集
>>> A = set('abcdef')
>>> B = set('abcdeg')
>>> B < A
True
>>> B.issubset(A)
True
# 并集
>>> B | A
{'c', 'b', 'g', 'f', 'e', 'a', 'd'}
>>> B.union(A)
{'c', 'b', 'g', 'f', 'e', 'a', 'd'}
# 交集
>>> A & B
{'c', 'b', 'e', 'a', 'd'}
>>> A.intersection(B)
{'c', 'b', 'e', 'a', 'd'}
# 差集
>>> A - B
{'f'}
>>> A.difference(B)
{'f'}
# 对称差
>>> A ^ B
{'f', 'g'}
>>> A.symmetric_difference(B)
{'f', 'g'}

集合中的方法:
1 clear 清空集合
2 copy 返回集合的浅拷贝
3 pop 删除并返回 任意的集合元素(如果集合为空,会引发 KeyError)
4 discard 删除集合中的一个元素(如果元素不存在,则不执行任何操作)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值