• python基础08_set集合


    关于前几次课的回顾:

    #!/usr/bin/env python
    # coding:utf-8
    
    ## 字符串  数字   列表   元组   字典
    
    ## 可变:列表  字典
    ## 不可变:字符串, 数字, 元组
    
    name = 'alex'
    print(id(name))
    
    name = 'ssb'
    print(id(name)) # 修改变量的值 id 的变化证明是不可变类型
    
    ## 访问顺序
    # 直接访问:数字
    # 顺序访问:字符串  列表  元组
    # 映射: 字典  速度快,但占内存大
    
    
    ## 存放元素个数:
    # 容器类型:列表,元组,字典
    # 原子:数字,字符串

    开始学习set  集合

    更多参考: https://www.cnblogs.com/jin-xin/p/7738630.html

    #!/usr/bin/env python
    # coding:utf-8
    
    tmp1 = []    # 创建空列表 list
    tmp2 = () # 创建空元组 tuple
    tmp3= {} # 创建空字典 dict
    tmp4= set() # 创建空集合 set


    s = {'ss',1,3,2,4,6,8,2,4}
    print(s,type(s))
    
    # 注意和字典的区别 字典是KV对,集合只有V
    # 集合是无序的  这个特点可以用来给list去重
    # 不同元素组成, 即没有相同元素
    # 元素必须是不可变类型, 不能是list
    
    for i in s:
        print(i)
    
    s1 = {(11,22,33,),44}
    print(s1)
    
    s2 = set('hello') # 自动去重
    print(s2)
    
    list1 = ['alex','ees','ddef','ees']
    print(list1)
    
    s3 = set(list1)
    print(s3)
    
    s.add('ddc')  # 添加单个元素
    s.add(8)
    print(s)
    
    s3.clear()  # 清空
    print(s3)
    
    s4 = s.copy()
    print(s4)
    
    s4.pop()     # 随机删除一个元素  而列表list则是默认删除最后一个
    tmp = s4.pop()  # 也可将删除的一个元素赋给变量
    print(tmp)  # 得到删除的那个值 print(s4) s.remove('ddc') # 指定删除 # s.remove('aaa') # 如果指定的没在,将出错 v = s.discard('aaa') # 如果指定的没在,删除不成功也不报错。 print(s)

    # 此外,set 还有 update 等方法.

    关于set的交差并补

    #!/usr/bin/env python
    # coding:utf-8
    
    lis1 = ['tom', 'jerry', 'andy', 'anna']
    lis2 = ['kathy', 'jerry', 'andy', 'joe']
    
    s1 = set(lis1)
    s2 = set(lis2)
    
    # 求交集 (共有的部分)
    print(s1, s2)
    print(s1.intersection(s2))
    print(s1 & s2)
    
    # 求并集 (合并且去重)
    print(s1.union(s2))
    print(s1 | s2)
    
    # 求差集 (减去s1中有s2的部分,得到剩余的)
    print(s1.difference(s2))
    print("s1剩下:", s1 - s2)
    print("s2剩下:", s2 - s1)
    
    # 求交差补集 (去掉共有的,留下各自私有的)
    print('交叉补集', s1.symmetric_difference(s2))
    print('交叉补集', s1 ^ s2)
    
    # 某些方法
    print(s1-s2)
    s1.difference_update(s2) # 等于s1 - s2后再赋给s1
    print(s1)
    
    # 判断有无交集
    print(s1.isdisjoint(s2))
    
    s3 = {1,2,3,4,5}
    s4 = {1,2,3,5}
    s5 = {11,22,33}
    
    print(s4.issubset(s3)) # 判断是否子集
    print(s3.issuperset(s4)) # 判断s3 是否父集
    s3.add(6) # 每次只能添加一个值
    print(s3)
    s3.update(s5) # 单次可以更新多个值
    s3.update(['aa','bb']) # 传列表
    s3.update(('cc','dd')) # 传元组
    print(s3)
    
    # 如果不考虑顺序,可以用set给列表去重
    ls = ['abc','fff','abc','dde']
    ls = list(set(ls))
    print(ls)
    
    ######### 特殊: 不可改变的 set
    s = frozenset('hello') # 将不能添加、删除、修改
    print(s)
  • 相关阅读:
    VS2015, .NET 4.6, C# 6.0, F# 4.0等重量级产品正式上线
    Visual Studio 2015正式发布
    持续集成并不能消除 Bug,而是让它们非常容易发现和改正(转)
    如何用Excel直接查询Oracle中的数据(转)
    HTTP必知必会(转)
    二叉树的友好实现(转)
    TortoiseGit push失败原因小结(转)
    Android
    对JAVA Bean使用PropertyDescriptor反射调用JAVA方法
    关于MSHTML
  • 原文地址:https://www.cnblogs.com/frx9527/p/python_08.html
Copyright © 2020-2023  润新知