python-集合

集合定义与使用

  • 无序的唯一对象集合
  • 用大括号{}包围,对象相互之间使用逗号分隔
  • 集合是动态的,可以随时添加或删除元素
  • 集合是异构的,可以包含不同类型的数据

集合的创建

  • 通过使用{}填充元素
    • set1 = {1,2,3}
      set2 = {'woshishaoqiran'}
      print(type(set1),set1,type(set2),set2)
      
      运行结果是:<class 'set'> {1, 2, 3} <class 'set'> {'woshishaoqiran'}
  • 通过构造方法set(item)//传入的参数为可迭代对象,常见的可迭代对象主要包括:字符串,列表,元组,字典
    • set3 = set('woshishaoqiran')
      print(type(set3),set3)
      
      运行结果是:<class 'set'> {'a', 'o', 's', 'q', 'w', 'r', 'n', 'i', 'h'}
  • 通过集合推导式
  • set5 = {i for i in range(5) if i % 2 == 0}
    print(type(set4),set4)
    
    运行结果是:<class 'set'> {0, 2, 4}
    
  • 成员检测
    • in:判断元素是否在集合中
set5 = {i for i in range(6)}
print('1是否在set5中:',1 in set5)

运行结果是:1是否在set5中: True
    • not in :判断元素是否在集合中不存在 
set5 = {i for i in range(6)}
print('1是否在set5中:',1 in set5)
print('7是否在set5中',7 in set5)
print('8是否在set5中',8 not in set5)
print('8是否在set5中',1 not in set5)

运行结果是:
1是否在set5中: True
7是否在set5中 False
8是否在set5中 True
8是否在set5中 False

集合常用方法

  • add()
    • add(item):将单个对象添加到集合中
    • 入参:对象item
    • 返回:none
    • set5 = {i for i in range(10)}
      set5.add('limanqizhenhaokan')
      print('当前集合中的元素为:',set5)
      
      运行结果是:当前集合中的元素为: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'limanqizhenhaokan'}
  • update()
    • update(iterable)
    • 批量添加来自可迭代对象中的所有元素
    • 入参:可迭代对象iterable
    • 返回none
    • set5 = {i for i in range(10)}
      set5.update('limanqizhenhao')
      print('添加字符串后set5中的元素',set5,type(set5))
      set5.update([1,2,3])
      print('添加列表后set5中的元素',set5,type(set5))
      
      运行结果是:
      添加字符串后set5中的元素 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'z', 'h', 'e', 'n', 'a', 'q', 'm', 'o', 'l', 'i'} <class 'set'>
      添加列表后set5中的元素 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'z', 'h', 'e', 'n', 'a', 'q', 'm', 'o', 'l', 'i'} <class 'set'>
      
  • remove()
    • remove(item):从集合中移除指定元素item
    • 入参:指定元素值
    • 返回:none
    • 如果item不存在于集合中则会引发KeyError
    • set5.remove(9)
      print('删除集合中的9后剩余的集合:',set5)
      运行结果是:
      删除集合中的9后剩余的集合: {0, 1, 2, 3, 4, 5, 6, 7, 8, 'z', 'h', 'e', 'n', 'a', 'q', 'm', 'o', 'l', 'i'}
  • discard()//discard方法不许要对元素内是否有这个值进行判断
    • set5.discard(6)
      print('删除数字6后集合中的元素:',set5)
      
      运行结果是:删除数字6后集合中的元素: {0, 1, 2, 3, 4, 5, 7, 8, 9}
  • pop()
    • 随机从集合中移除并返回一个元素
    • 入参:无
    • 返回:被移除的元组
    • 如果集合为空则会引发KeyError
    • print('被pop方法随机移除的元素',set5.pop())
      
      运行结果是:被pop方法随机移除的元素 0
  • clear()
    • 清空集合,移除所有元素
    • 入参:无
    • 返回None
    • set5.clear()
      print(set5)
      
      运行结果是:set()

集合运算

  1. 交集运算
    set1 = {1,2,3}
    set2 = {1,2,3,4}
    print('set1和set2的交集是:',set1.intersection(set2))
    print(set1 & set2)
    
    运行结果是:set1和set2的交集是: {1, 2, 3}

  2. 并集运算

     

    set1 = {1,2,3}
    set2 = {1,2,3,4}
    print('set1和set2的并集是:',set1.union(set2))
    print('set1和set2的并集是:',set1 | set2)
    
    运行结果是:
    set1和set2的并集是: {1, 2, 3, 4}
    set1和set2的并集是: {1, 2, 3, 4}
    

  3. 差集运算

     

    set1 = {1,2,3}
    set2 = {1,2,3,4}
    print('set1和set2的差集是:',set2.difference(set1))
    
    运行结果是:
    set1和set2的差集是: {4}

集合推导式

  • 类似列表推导式,同样集合支持集合推导式
  • 语法:{x for x in .... if .....}
set1 = {x for x in 'limanqiwoaini' if x in 'limanqi'}
print(set1)

运行结果是:{'i', 'a', 'm', 'q', 'l', 'n'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值