zoukankan      html  css  js  c++  java
  • 集合(set)

    集合(set)是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset())两种。

    集合的特点:

    1. 由不同元素组成
    2. 无序
    3. 集合中元素必须是不可变类型(number,string,tuple)

    创建可变集合

    s = {2, 3, 1, 4, 3}
    
    print(s)    # {1, 2, 3, 4}
    
    # 通过set()创建
    s = set('hello')
    print(s)    # {'e', 'o', 'l', 'h'}
    
    s = set(['xiao', 'xiao', 'ming'])
    print(s)    # {'xiao', 'ming'}

    集合内置方法

    add()  # 添加

    s = {1, 2, 3}
    
    s.add('xm')
    print(s)    # {1, 2, 3, 'xm'}
    
    s.add(3)
    print(s)    # {1, 2, 3, 'xm'}

    clear()  # 清空

    s = {1, 3, 2}
    
    s.clear()
    print(s)    # set()

     pop()  # 删除

    s = {1, 2, 3, 'xm'}
    
    s.pop()
    print(s)    # {2, 3, 'xm'}

    remove()  # 指定删除,删除不存在的元素会报错

    s = {1, 2, 3, 'xm'}
    
    s.remove('xm')
    print(s)    # {1, 2, 3}
    
    s.remove('xxm')    # 报错

    discard()  # 指定删除,删除不存在的元素不会报错

    s = {1, 2, 3, 'xm'}
    
    s.discard('xm')
    print(s)    # {1, 2, 3}
    
    s.discard('xxm')    # 不会报错,继续执行下面的代码
    print(s)    # {1, 2, 3}

    copy()  # 拷贝(复制)

    s = {1, 2, 3, 'xm'}
    
    new_s = s.copy()
    print(new_s)    # {1, 2, 3, 'xm'}

    update()  # 更新

    s1 = {1, 2, 3, 'xm'}
    
    s1.update('enen')    # 字符串
    print(s1)    # {1, 2, 3, 'xm', 'n', 'e'}
    
    s1.update({3, 4, 'enen'})    # 集合
    print(s1)    # {1, 2, 3, 4, 'e', 'enen', 'n', 'xm'}
    
    s1.update(('abc', 'qwe'))    # 元组
    print(s1)    # {1, 2, 3, 4, 'abc', 'e', 'enen', 'qwe', 'n', 'xm'}
    
    s1.update(['list1', 'list2'])    # 列表
    print(s1)    # {1, 2, 3, 4, 'abc', 'list1', 'list2', 'e', 'enen', 'qwe', 'n', 'xm'}

    集合交、差、并集

    intersection()  # 交集(&)

    # 语法
    # set1.intersection(set2)
    
    py_list = {'ergou', 'xiaoming', 'goudan'}
    php_list = {'xiaoming', 'xiaohong','xiaosan'}
    
    print(py_list.intersection(php_list))    # {'xiaoming'}
    
    print(py_list & php_list)    # {'xiaoming'}

    union()  # 并集(|)

    # 语法
    # set1.union(set2)
    
    py_list = {'ergou', 'xiaoming', 'goudan'}
    php_list = {'xiaoming', 'xiaohong','xiaosan'}
    
    print(py_list.union(php_list))    # {'ergou', 'xiaoming', 'goudan', 'xiaohong', 'xiaosan'}
    
    print(py_list | php_list)    # {'ergou', 'xiaoming', 'goudan', 'xiaohong', 'xiaosan'}

    difference()  # 差集(-)

    # 语法
    # set1.difference(set2)
    
    py_list = {'ergou', 'xiaoming', 'goudan'}
    php_list = {'xiaoming', 'xiaohong','xiaosan'}
    
    print(py_list.difference(php_list))    # {'ergou', 'goudan'}
    print(php_list.difference(py_list))    # {'xiaohong', 'xiaosan'}
    
    print(py_list - php_list)    # {'ergou', 'goudan'}
    print(php_list - py_list)    # {'xiaohong', 'xiaosan'}

    symmetric_difference()  # 交叉补集(^)

    # 语法
    # set1.symmetric_difference(set2)
    
    py_list = {'ergou', 'xiaoming', 'goudan'}
    php_list = {'xiaoming', 'xiaohong','xiaosan'}
    
    print(py_list.symmetric_difference(php_list))    # {'ergou', 'goudan', 'xiaohong', 'xiaosan'}
    
    print(py_list ^ php_list)    # {'ergou', 'goudan', 'xiaohong', 'xiaosan'}

    difference_update()  # 

    # 相当于
    # set1 = set1 - set2
    
    py_list = {'ergou', 'xiaoming', 'goudan'}
    php_list = {'xiaoming', 'xiaohong','xiaosan'}
    
    print(py_list.difference_update(php_list))    # {'ergou', 'goudan'}
    
    print(php_list.difference_update(py_list))    # {'xiaohong', 'xiaosan'}

    intersection_update()  # 

    # 相当于
    # set1 = set1 & set2
    
    py_list = {'ergou', 'xiaoming', 'goudan'}
    php_list = {'xiaoming', 'xiaohong','xiaosan'}
    
    py_list.intersection(php_list)
    print(py_list)    # {'xiaoming'}

    indisjoint()  # 判断两集合交集是否为空(没有交集返回->True,有交集返回->False)

    # 格式
    # set1.isdisjoint(set2)
    
    s1 = {1, 2, 3}
    s2 = {4, 5, 6}
    
    var = s1.isdisjoint(s2)
    print(var)    # True
    
    s2 = {3, 4, 5}
    var = s1.isdisjoint(s2)
    print(var)    # False

    issubset()  # 判断一个集合是否是另一个集合的子集

    # set1.issubset(s2)
    
    s1 = {1, 2, 3}
    s2 = {1, 2, 3, 4, 5, 6}
    
    print(s1.issubset(s2))    # True
    
    print(s2.issubset(s1))    # False

    issuperset()  # 判断一个集合是否是另一个集合的父集

    # set1.issuperset(s2)
    
    s1 = {1, 2, 3}
    s2 = {1, 2, 3, 4, 5, 6}
    
    print(s1.issubset(s2))    # False
    
    print(s2.issubset(s1))    # True

    symmetric_difference_update()  # 

    # 相当于
    # set1 = set1.symmetric_difference(set2)
    
    s1 = {1, 2, 3}
    s2 = {3, 4, 5}
    s1.symmetric_difference_update(s2)
    print(s1)    # {1, 2, 4, 5}

     创建不可变集合

    s = frozenset('xiaoming')
    print(s)    # frozenset({'m', 'g', 'o', 'a', 'i', 'x', 'n'})
  • 相关阅读:
    各类Http请求状态(status)及其含义 速查列表 xmlhttp status
    Microsoft Visual Studio 2010 正式版下载[含旗舰版序列号](中、英文版)
    【分享】开源或免费的ASP.NET web应用列表
    线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析
    Asp.Net中多语言的实现
    Oracle 数字与空值的排序问题
    新版微软一站式示例代码库 6月2日更新下载。
    .NET反射机制简介
    Decimal与double类型误差
    用动态菜单增强.NET应用程序
  • 原文地址:https://www.cnblogs.com/yanxiaoming/p/9163717.html
Copyright © 2011-2022 走看看