• 零基础入门学习Python(27)--集合:在我的世界里,你就是唯一


    知识点

    集合:set

    setdict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

    集合中的元素的三个特征

    1)确定性(元素必须可hash)
    2)互异性(去重)
    3)无序性(集合中的元素没有先后之分),如集合{3,4,5}{3,5,4}算作同一个集合
    【注意】:集合存在的意义就在于去重和关系运算。

    创建集合

    创建一个空集合需使用set() 工厂函数:
    语法:

    class set([iterable])
    
    参数说明:
    
    iterable -- 可迭代对象对象;

    示例:

    >>> set1 = set()
    >>> type(set1)
    <class 'set'>
    
    >>> set2 = {11,22,33,12,11}
    >>> type(set2)
    <class 'set'>
    >>> set2
    {33, 11, 12, 22}

    【注意】:注意在创建空集合的时候只能使用s=set(),因为s={}创建的是空字典

    >>> a = set('boy')                      #set一个字符串
    >>> a
    {'b', 'y', 'o'}
    
    >>> b = set(['y','b','o','o'])          #set一个列表
    >>> b
    {'b', 'y', 'o'}
    
    >>> f = set(('k1','k1','k2','k3',1,2))  #set一个元祖
    >>> f
    {1, 2, 'k2', 'k3', 'k1'}
    
    >>> c = set({'k1':1,'k2':2,'k3':2})     #set一个字典
    >>> c
    {'k2', 'k1', 'k3'}
    >>> type(c)
    <class 'set'>
    
    >>> d = {1,2,3,4}
    >>> type(d)
    <class 'set'>
    >>> d
    {1, 2, 3, 4}
    
    >>> e = {(1,2,1,1)}
    >>> e
    {(1, 2, 1, 1)}

    创建不可变集合

    frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

    语法:

    class frozenset([iterable])
    
    参数
    iterable -- 可迭代的对象,比如列表、字典、元组等等。

    示例:

    >>>a = frozenset(range(10))     # 生成一个新的不可变集合
    >>> a
    frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    >>> b = frozenset('runoob') 
    >>> b
    frozenset(['b', 'r', 'u', 'o', 'n'])   # 创建不可变集合
    
    
    >>> num3 = frozenset([1,2,3,4,5])
    >>> num3
    frozenset({1, 2, 3, 4, 5})
    >>> num3.add(0)
    Traceback (most recent call last):
      File "<pyshell#42>", line 1, in <module>
        num3.add(0)
    AttributeError: 'frozenset' object has no attribute 'add'
    

    集合的关系运算

    in,not in:判断某元素是否在集合内

    >>> a
    {'b', 'y', 'o'}
    >>> b in a
    False
    >>> 'b' in a

    ==,!=:判断两个集合是否相等

    >>> a = {3,4,5}
    >>> b = {4,3,5}
    >>> a == b
    True

    集合的内建方法

    集合(s).方法名 等价符号 方法说明
    s.issubset(t) s <= t 子集测试(允许不严格意义上的子集):s中所有的元素都是t的成员
    s < t 子集测试(严格意义上):s中所有的元素都是t的成员
    示例:
    >>> s = {1,2,3,4}
    >>> t = {1,2,3,4,5}
    >>> s.issubset(t)
    True
    >>> s <= t
    True
    >>> s < t
    集合(s).方法名 等价符号 方法说明
    s.issuperset(t) s >= t 超集测试(允许不严格意义上的超集):t中所有的元素都是s的成员
    s > t 超集测试(严格意义上):t中所有的元素都是s的成员
    示例:
    >>> s = {1,2,3,4,5}
    >>> t = {1,2,3}
    >>> s.issuperset(t)
    True
    >>> s >= t
    True
    >>> s > t
    True
    集合(s).方法名 等价符号 方法说明
    s.union(t) s | t 合并操作:s “或” t 中的元素
    示例:
    >>> s = {1,2,3,4}
    >>> t = {2,3,4,5}
    >>> s.union(t)
    {1, 2, 3, 4, 5}
    >>> s|t
    {1, 2, 3, 4, 5}
    集合(s).方法名 等价符号 方法说明
    s.intersection(t) s & t 交集操作:s “与” t 中的元素
    示例:
    >>> s = {1,2,3,4}
    >>> t = {2,3,4,5}
    >>> s & t
    {2, 3, 4}
    >>> s.intersection(t)
    {2, 3, 4}
    集合(s).方法名 等价符号 方法说明
    s.difference(t) s - t 差分操作:在s中存在,在t中不存在的元素
    示例:
    >>> s = {1,2,3,4}
    >>> t = {2,3,4,5}
    >>> s - t
    {1}
    >>> s.difference(t)
    {1}
    集合(s).方法名 等价符号 方法说明
    s.symmetric_difference(t) s ^ t 对称差分操作:s “或” t 中的元素,但不是s和t的共有元素
    >>> s = {1,2,3,4}
    >>> t = {2,3,4,5}
    >>> s.symmetric_difference(t)
    {1, 5}
    >>> s ^ t
    {1, 5}
    集合(s).方法名 等价符号 方法说明
    s.copy() 返回s的浅拷贝
    示例:
    >>> a = {1,2,3}
    >>> b = a.copy()
    >>> b
    {1, 2, 3}
    集合(s).方法名 等价符号 方法说明
    以下方法不适用于不可变集合frozenset()
    s.update(t) s |= t 将t中的元素添加到s中
    示例:
    >>> s = {1,2,3,4}
    >>> t = {2,3,4,5}
    >>> s |= t
    >>> s
    {1, 2, 3, 4, 5}
    
    >>> s = {1,2,3,4}
    >>> t = {2,3,4,5}
    >>> s.update(t)
    >>> s
    {1, 2, 3, 4, 5}
    集合(s).方法名 等价符号 方法说明
    以下方法不适用于不可变集合frozenset()
    s.intersection_update(t) s &= t 交集修改操作:s中仅包括s和t中共有的成员
    示例:
    >>> s = {1,2,3,4}
    >>> t = {2,3,4,5}
    >>> s.intersection_update(t)
    >>> s
    {2, 3, 4}
    
    >>> s = {1,2,3,4}
    >>> t = {2,3,4,5}
    >>> s &= t
    >>> s
    {2, 3, 4}
    集合(s).方法名 等价符号 方法说明
    以下方法不适用于不可变集合frozenset()
    s.difference_update(t) s -= t 差修改操作:s中包括仅属于s但不属于t的成员
    示例:
    >>> s = {1,2,3,4}
    >>> t = {2,3,4,5}
    >>> s -= t
    >>> s
    {1}
    集合(s).方法名 等价符号 方法说明
    以下方法不适用于不可变集合frozenset()
    s.symmetric_difference_update(t) s ^= t 对称差分修改操作:s中包括仅属于s或仅属于t的成员
    示例:
    >>> s = {1,2,3,4}
    >>> t = {2,3,4,5}
    >>> s ^= t
    >>> s
    {1, 5}
    集合(s).方法名 等价符号 方法说明
    以下方法不适用于不可变集合frozenset()
    s.add(obj) 加操作:将obj元素添加到s中
    示例:
    >>> s = {1,2,3,4}
    >>> s.add('fs')
    >>> s
    {1, 2, 3, 4, 'fs'}
    集合(s).方法名 等价符号 方法说明
    以下方法不适用于不可变集合frozenset()
    s.remove(obj) 删除操作:将obj元素从s中删除,如果s中不存在obj,将引发异常
    示例:
    >>> s = {1, 2, 3, 4, 'fs'}
    >>> s.remove('fs')
    >>> s
    {1, 2, 3, 4}
    >>> s.remove('a')
    Traceback (most recent call last):
      File "<pyshell#182>", line 1, in <module>
        s.remove('a')
    KeyError: 'a'
    
    集合(s).方法名 等价符号 方法说明
    以下方法不适用于不可变集合frozenset()
    s.discard(obj) 丢弃操作:将obj元素从s中删除,如果s中不存在obj,也没事
    示例:
    >>> s = {1, 2, 3, 4, 'fs'}
    >>> s.discard('fs')
    >>> s
    {1, 2, 3, 4}
    >>> s.discard('a')
    >>> s
    {1, 2, 3, 4}
    集合(s).方法名 等价符号 方法说明
    以下方法不适用于不可变集合frozenset()
    s.pop() 弹出操作:移除并返回s中任意一个元素
    s.clear() 清除操作:请出s中所有的元素
    >>> s = {1, 2, 3, 4}
    >>> s.pop()
    1
    >>> s
    {2, 3, 4}
    >>> s.pop()
    2
    >>> s
    {3, 4}
    
    
    >>> s.clear()
    >>> s
    set()

    课后习题

    这里写图片描述
    这里写图片描述

  • 相关阅读:
    DATASNAP远程方法返回TSTREAM正解
    DELPHI获取宽带IP
    DELPHI HMAC256
    JWT -- JSON WEB TOKEN
    UNIGUI集成HTML导航
    咏南WEB APP开发框架
    购买咏南中间件
    咏南中间件当作WEB SERVER使用方法
    咏南中间件增加WEBSOCKET支持
    iOS -- 设置label的自适应
  • 原文地址:https://www.cnblogs.com/wanbin/p/9514683.html
Copyright © 2020-2023  润新知