python中set详解

目录

 set   集合

内置函数

1. add(...)

2.clear(...)

3.copy(...)

4.set中的移除

4.1 pop()

4.2 remove(元素)

4.3 discard(元素)

5.数学运算

5.1 __update(集合2)

5.2 __intersection(集合2)

5.3__union(集合2)

5.4__difference(集合2)

5.5 difference_update(集合)

5.6 isdisjoint(集合)

5.7 issubset(集合)

5.8 issuperset(集合)

5.9 intersection_update(集合)

5.10 symmetric_difference(集合) 

5.11 symmetric_difference_update(集合) 


 set   集合

哈希表:  Hash tanle 不能重复
          1.元素不能重复
          2.元素是无序的
 set   集合
 定义:
       set_data = {1, 2, 3}
       set_data = set()
        注意:使用{}这种定义方式,不要定义空集合(默认是dict)
 特点:
       列表去重list(set())但去重后顺序无法确定,集合是无序的
       set中的元素是不重复,且无序因此没有下标
      支持union(联合),intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算
 返回值:及执行玩操作后会产生一个新的值,  无返回值,及执行玩操作后不会产生一个新的值

内置函数

1. add(...)

add(...)    添加新元素  
     Add an element to a set.          将元素添加到集合中
     This has no effect if the element is already present.
     如果元素已存在则此操作不起作用
 往set中添加元素4.6
set_data1 = {1, 2, 3}
set_data1.add(4)
print(set_data1)        # 结果{1, 2, 3, 4}
set_data1.add(6)
print(set_data1)        # 结果{1, 2, 3, 4, 6}
# 总结:命令add是在原函数上进行操作的,因此会添加到原函数上

2.clear(...)

clear(...)   清除(...)
    Remove all elements from this set.    移除此集合内所有元素
set_data1 = {1, 2, 3}
set_data1.clear()
print(set_data1)     # 结果 set()
 总结:命令clear是在原函数上进行操作的,因此会清除原函数中的元素

3.copy(...)

copy(...)  拷贝(...)
    Return a shallow copy of a set.     返回一个集合的浅表副本
    使用方法与dict,list一样,想要了解请查看python中dict详解

4.set中的移除

__pop()              随机移除一个元素若为空,则抛出异常,无返回值
__remove(元素)           删除对应元素,若为空,则抛出异常, 无返回值
__discard(元素)          删除对应元素,若为空, 不抛出异常, 无返回值
set_data = {1, 1.1, 6+9j, "123", b'456', None, False, True, (1, 2)}
set_data1 = {1, 1.1, 6+9j, "123", b'456', None, False, (1, 2)}
set_data3 = {1.1, 6+9j, "123", b'456', None, False, True, (1, 2)}
print(set_data)
print(set_data1)
print(set_data3)
# 结论在python中True等于1

4.1 pop()

set_data4 = {1, 2}
set_data4.pop()
# print(set_data4)                # 输出结果{2}
set_data4.pop()
print(set_data4)                  # 输出结果set()
set_data4.pop()
print(set_data4)                  # 会发生报错 KeyError: 'pop from an empty set'

4.2 remove(元素)

set_data5 = {1, 2}
set_data5.remove(1)                 # 输出结果{2}
print(set_data5)
set_data5.remove(2)
print(set_data5)                    # 输出结果set()
set_data5.remove(3)
print(set_data5)                    # 输出结果KeyError: 3

4.3 discard(元素)

 discard(元素)   
      Remove an element from a set if it is a member.
      如果元素的成员,则从集合中移除该元素,
      If the element is not a member, do nothing.
     如果元素不是成员,则什么也不做
set_data6 = {1, 2}
set_data6.discard(1)
print(set_data6)                    # 输出结果{2}
set_data6.discard(2)
print(set_data6)                    # 输出结果set()
set_data6.discard(3)
print(set_data6)                    # 输出结果set()   由此得出 discard对空值不会产生报错
# 总结:命令discard是在原函数上进行操作的,因此会使原函数中的元素发生改变

5.数学运算

所包含的函数
__update(集合)           合并集合    无返回值
__intersection(集合)     交集       有返回值
__union(集合)            并集       有返回值
__difference(集合)       差集       有返回值
difference_update(集合)  差异_更新   无返回值
isdisjoint(集合)         是否相交    有返回值
issubset(集合)           是否为子集   有返回值
issuperset(集合)         是否为父集   有返回值
intersection_update(集合)交集_更新    无返回值
symmetric_difference(集合)对称差     有返回值

5.1 __update(集合2)

 __update(集合2)          合并集合
set_data1 = {1, 2, 3}
set_data2 = {3, 4, 5}
set_data1.update(set_data2)
print(set_data1)                # 输出结果  {1, 2, 3, 4, 5}
总结:不会产生一个新的集合,新产生的结果会在 (集合1.update(集合2))集合1中体现

5.2 __intersection(集合2)

__intersection(集合2)          交集
     Return the intersection of two sets as a new set.
      返回两个集合的交集作为一个新集。
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data3 = set_data1.intersection(set_data2)
print(set_data3)                 # 输出结果 {1, 2, 3}

5.3__union(集合2)

__union(集合2)                并集 
总结:会产生一个新的集合
set_data1 = {1, 2, 3}
set_data2 = {3, 4, 5}
set_data3 = set_data1.union(set_data2)
print(set_data3)                # 输出结果 {1, 2, 3, 4, 5}

5.4__difference(集合2)

__difference(集合2)          差集
      Return the difference of two or more sets as a new set.
      返回两个或多个集合的差作为一个新集合。
      (i.e. all elements that are in this set but not the others.)
      (即在此集合中但不在其他集合中的所有元素。)
set_data1 = {1, 2, 3}
set_data2 = {3, 4, 5}
set_data3 = set_data1.difference(set_data2)
set_data4 = set_data2.difference(set_data1)
print(set_data3)                            # 输出结果 {1, 2}
print(set_data4)                            # 输出结果 {4, 5}

5.5 difference_update(集合)

difference_update(集合)  差集_更新
     Remove all elements of another set from this set.
      从这个集合中移除另一个集合的所有元素。
 将set_data1和set_data2中的共同元素在set_data2中移除
set_data1 = {1, 2, 3, 6}
​​​​​​​set_data2 = {1, 2, 3, 4}
set_data2.difference_update(set_data1)
print(set_data1)        # 结果{1, 2, 3, 6}
print(set_data2)        # 结果{4}
 将set_data1和set_data2中的共同元素在set_data1中移除
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data1.difference_update(set_data2)
print(set_data1)        # 结果{6}
print(set_data2)        # 结果{1, 2, 3, 4}
总结: 命令difference_update是在原函数上进行操作的,因此会使原函数中的元素发生

  

5.6 isdisjoint(集合)

isdisjoint(集合)    是否相交
      Return True if two sets have a null intersection.
      如果两个集合的交集为空,则返回True。
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data1.isdisjoint(set_data2)
print(set_data1.isdisjoint(set_data2))           # 结果 False
set_data1 = {1, 2, 3, 6}
set_data2 = {4, 5, 7}
set_data1.isdisjoint(set_data2)
print(set_data1.isdisjoint(set_data2))          # 结果True

  

5.7 issubset(集合)

issubset(集合)       是否为子集
      Report whether another set contains this set.
      报告另一个集合是否包含此集合。
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2}
set_data1.issubset(set_data2)
print(set_data1.issubset(set_data2))           # 结果 False
set_data2.issubset(set_data1)
print(set_data2.issubset(set_data1))           # 结果 True

5.8 issuperset(集合)

issuperset(集合)是否为父集
      Report whether this set contains another set.
      报告此集合是否包含另一个集合。
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2}
set_data1.issuperset(set_data2)
print(set_data1.issuperset(set_data2))            # 结果  True
print(set_data2.issuperset(set_data1))            # 结果  False

5.9 intersection_update(集合)

intersection_update(集合)      交集_更新
     Update a set with the intersection of itself and another.
     用自身和另一个集合的交集更新集合。
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data1.intersection_update(set_data2)
print(set_data1)                        # 结果{1, 2, 3}
set_data2.intersection_update(set_data1)
print(set_data2)                        # 结果{1, 2, 3}

5.10 symmetric_difference(集合) 

symmetric_difference(集合)        对称差
     Return the symmetric difference of two sets as a new set.
      返回两个集合的对称差作为一个新集合
     (i.e. all elements that are in exactly one of the sets.)
     (即恰好位于其中一个集合中的所有元素。)
set_data1 = {1, 2, 3, 6}
set_data2 = {1, 2, 3, 4}
set_data1.symmetric_difference(set_data2)
print(set_data1.symmetric_difference(set_data2))      # 结果{4, 6}
set_data2.symmetric_difference(set_data1)
print(set_data2.symmetric_difference(set_data1))      # 结果{4, 6}

5.11 symmetric_difference_update(集合) 

symmetric_difference_update(集合)   对称差_更新
      Update a set with the symmetric difference of itself and another.
     用自身和另一个的对称差更新一个集合。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱玩网络的小石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值