zoukankan      html  css  js  c++  java
  • Python——数据类型之set

     本篇主要内容

    • set集合的特点

    • set集合的建立

    • set集合的17个内置函数

    • set集合的数学运算符号

    1、set集合类型的特点。

    1、无序

    2、不同元素

    3、元素必须不可变。(数字,字符串,元组都属于不可变的,列表,字典属于可变的。)

    2、set集合的建立

    a={'Albert', 'QQ','XP'}
    print(type(a),a)

    输出

    <class 'set'> {'Albert', 'QQ', 'XP'}

    元素不可为可变数据类型

    a={'Albert', 'QQ','XP',(1,2,3)}
    print(a)
    b={'Albert', 'QQ','XP',[1,2,3]}
    print(b)

    输出

    {'XP', (1, 2, 3), 'Albert', 'QQ'}
    Traceback (most recent call last):
      File "C:/Users/admin/PycharmProjects/temp.py", line 12, in <module>
        b={'Albert', 'QQ','XP',[1,2,3]}
    TypeError: unhashable type: 'list'

    也可以这样新建一个集合

    a=set(['Albert', 'QQ','XP'])
    print(a)

    输出

    {'Albert', 'QQ', 'XP'}

    也就是遍历元素生成一个集合。

    3、set的内置函数方法

    (1)add(self, *args, **kwargs):这很简单的往集合里面放元素。

    a=set(['Albert', 'QQ','XP'])
    a.add('yzp')
    print(a)

    输出

    {'XP', 'Albert', 'QQ', 'yzp'}

    从输出可以看出来集合里面元素的存放是无序的。

    注:一次只能加一个不可变元素。

    (2)clear(self, *args, **kwargs):清空整个集合

    (3)copy(self, *args, **kwargs):复制一个一模一样的集合(还是b=a与b=a.copy()的区别)

    (4)difference(self, *args, **kwargs):得到多个集合的差集。

    a={'Albert', 'QQ','XP'}
    b={'QQ','XP','yzp'}
    print(a.difference(b))

    输出

    {'Albert'}

    直白的说就是a有而b没有的。

    (5)difference_update(self, *args, **kwargs):求差集并更新这个集合

    a={'Albert', 'QQ','XP'}
    b={'QQ','XP','yzp'}
    print(a.difference_update(b))
    print(a)

    输出

    None
    {'Albert'}

    (6)discard(self, *args, **kwargs):删除集合里面的指定元素,如果不存在这个元素,什么也不做(不报错)

    a={'Albert', 'QQ','XP'}
    a.discard('QQ')
    print(a)

    输出

    {'XP', 'Albert'

    (7)intersection(self, *args, **kwargs):求交集

    a={'Albert', 'QQ','XP'}
    b={'QQ','XP','yzp'}
    print(a.intersection(b))

    输出

    {'QQ', 'XP'}

    通俗的来说就是ab都有的

    (8)intersection_update(self, *args, **kwargs):求集并更新集合

    a={'Albert', 'QQ','XP'}
    b={'QQ','XP','yzp'}
    print(a.intersection_update(b))
    print(a)

    输出

    None
    {'XP', 'QQ'}

    (9)isdisjoint(self, *args, **kwargs):如果交集为空,返回true

    a={'Albert', 'QQ','XP'}
    b={'QQ','XP','yzp'}
    print(a.isdisjoint(b))

    输出

    False

    (10)issubset(self, *args, **kwargs),判断是不是被包含。

    a={ 'QQ','XP'}
    b={'QQ','XP','yzp'}
    print(a.issubset(b))

    输出

    True

    (11)issuperset(self, *args, **kwargs):判断是不是包含

    a={ 'Albert','QQ','XP'}
    b={'QQ','XP'}
    print(a.issuperset(b))

    输出

    True

    (12)pop(self, *args, **kwargs):随机删除一个元素,如果集合为空,则报错KeyError

    a={ 'Albert','QQ','XP'}
    a.pop()
    print(a)

    输出

    {'QQ', 'XP'}

     (13)remove(self, *args, **kwargs):删除指定元素,元素不存在则报错KeyError

    a={ 'Albert','QQ','XP'}
    a.remove('Albert')
    print(a)
    a.remove('yzp')

    输出

    {'QQ', 'XP'}
    Traceback (most recent call last):
      File "C:/Users/admin/PycharmProjects/temp.py", line 13, in <module>
        a.remove('yzp')
    KeyError: 'yzp'

     (14)symmetric_difference(self, *args, **kwargs):求交叉补集

    a={ 'Albert','QQ','XP'}
    b={'QQ','XP','yzp'}
    print(a.symmetric_difference(b))

    输出

    {'Albert', 'yzp'}

    (15)symmetric_difference_update(self, *args, **kwargs):求交叉补集并更新集合

    (16)union(self, *args, **kwargs):求并集

    a={ 'Albert','QQ','XP'}
    b={'QQ','XP','yzp'}
    print(a.union(b))

    输出

    {'XP', 'QQ', 'yzp', 'Albert'}

    (17)update(self, *args, **kwargs):更新集合。也就是求并集并更新这个集合

    a={ 'Albert','QQ','XP'}
    b={'QQ','XP','yzp'}
    a.update(b)
    print(a)

    输出

    {'yzp', 'Albert', 'QQ', 'XP'}

     4、数学运算符

    求交集 a&b

    求并集 a|b

    求差集 a-b,或者b-a

    求交叉补集 a^b

    a={1,2,3}
    b={2,3,4}
    print(a&b)
    print(a|b)
    print(a-b)
    print(b-a)
    print(a^b)

    输出

    {2, 3}
    {1, 2, 3, 4}
    {1}
    {4}
    {1, 4}
  • 相关阅读:
    Android笔记(ImageView、BaseLine、进度条ProgressBar)
    Android笔记(dp、sp、px、多选按钮CheckBox、单选按钮RadioButton)
    Android笔记(简介)
    Android Studio安装后Fetching android sdk component information超时的解决方案
    解决The environment variable JAVA_HOME does not point to a valid JVM installation
    使用Genymotiont调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法
    Android Studio导入第三方jar包及.so动态库
    数据库知识记录
    CentOS7.5下yum安装MySQL8.0.11笔记
    MyBatis的mapper.xml中判断集合的size
  • 原文地址:https://www.cnblogs.com/albert-yzp/p/10166476.html
Copyright © 2011-2022 走看看