zoukankan      html  css  js  c++  java
  • Python基础-set集合

    1、集合的创建
    s = set('fansik and fanjinbao')
    print(s)
    打印结果(去掉了重复的字符):
    {'k', 'd', 'f', 'n', ' ', 'j', 'i', 'b', 's', 'o', 'a'}

    或者:
    s1 = ['fansik', 'fanjinbao', 'zhansan', 'fansik']
    print(set(s1))
    打印结果(去掉了重复的名字):
    {'fanjinbao', 'zhansan', 'fansik'}

    集合对象是一组无序排列的可哈希的值(相当于字典的key):
    li = [['li', 'l1'], 'fansik', 'fanjinbao']
    s = set(li) #TypeError: unhashable type: 'list'
    print(s)
    2、集合的分类
    可变集合(set):可添加和删除元素,可变集合本身非可哈希的,不能用作字典的键,也不能做其他集合的元素
    li = ['fansik', 'fanjinbao']
    s = set(li)
    print(s)
    d = {s: 'value'} # TypeError: unhashable type: 'set'

    不可变集合(frozenset):与可变集合相反


    3、集合的基本操作
    创建集合:集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()创建
    s1 = set("fansik")
    s2 = frozenset("fanjinbao")
    print(s1, type(s1)) # {'i', 'n', 's', 'a', 'f', 'k'} <class 'set'>
    print(s2, type(s2)) # frozenset({'j', 'i', 'n', 'o', 'b', 'a', 'f'}) <class 'frozenset'>

    访问集合:由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或是用in、not in来访问或判断集合元素

    s1 = set("fansik")
    print('s' in s1) # True
    print('fanjinbao' not in s1) # True
    for i in s1:
        print(i)

    执行结果:

    n
    k
    f
    i
    a
    s

    更新集合:
    s1 = set("fansik")
    s1.add('fanjinbao') # 添加了一个'fanjinbao'的元素到集合中
    print(s1)

    执行结果:

    {'a', 'f', 'n', 'fanjinbao', 'i', 's', 'k'}

    s1 = set("fansik")
    s1.update('fanjinbao') # 将'fanjinbao'的每个字符作为一个元素添加到集合中
    print(s1)

    执行结果:

    {'b', 'o', 'i', 'k', 'j', 'f', 'a', 's', 'n'}

    s1 = set("fansik")
    s1.update(['fanjinbao', 'zhangsan']) # 将'fanjinbao'和'zhangsan'两个元素添加到集合中
    print(s1)

    执行结果:

    {'fanjinbao', 's', 'i', 'zhangsan', 'k', 'n', 'a', 'f'}

    s1 = set(['fansik', 'fanjinbao', 'zhangsan'])
    s1.remove('fansik') # 将'fansik'元素从集合中删除
    print(s1)

    执行结果:

    {'zhangsan', 'fanjinbao'}

    s1 = set(['fansik', 'fanjinbao', 'zhangsan'])
    s1.pop() # 随机删除集合中的元素
    print(s1)

    执行结果:

    {'zhangsan', 'fanjinbao'}

    s1 = set(['fansik', 'fanjinbao', 'zhangsan'])
    s1.clear() # 清空集合
    print(s1)

    执行结果:

    set()

    s1 = set(['fansik', 'fanjinbao', 'zhangsan'])
    del s1 # 删除集合
    print(s1)

    执行结果:

    NameError: name 's1' is not defined

    4、集合的交集
    s1 = set('abcde')
    s2 = set('defgh')
    print(s1.intersection(s2))
    或者:
    print(s1 & s2)

    执行结果:

    {'e', 'd'}

    5、集合的并集
    s1 = set('abcde')
    s2 = set('defgh')
    print(s1.union(s2))
    或者:
    print(s1 | s2)

    执行结果:

    {'c', 'g', 'e', 'b', 'f', 'd', 'h', 'a'}

    6、集合的差集
    s1 = set('abcde')
    s2 = set('defgh')
    print(s1.difference(s2))
    或者:
    print(s1 - s2)

    执行结果:

    {'a', 'b', 'c'}

    7、对称差集
    s1 = set('abcde')
    s2 = set('defgh')
    print(s1.symmetric_difference(s2))
    或者:
    print(s1 ^ s2)

    执行结果:

    {'a', 'g', 'b', 'f', 'c', 'h'}

    8、(超集 )父集
    s1 = set('abcde')
    s2 = set('defgh')
    s3 = set('abcdefg')
    print(s1.issuperset(s2)) # False
    print(s3.issuperset(s1)) # True

    9、子集
    s1 = set('abcde')
    s2 = set('defgh')
    s3 = set('abcdefg')
    print(s1.issubset(s2)) # False
    print(s1.issubset(s3))   # True
  • 相关阅读:
    重构区块链
    区块链隐私保护技术简单介绍
    Extmail邮件过滤和杀毒
    关于Python的JSON
    关于Python的JSON
    关于Python的JSON
    Tomcat的设置4——Tomcat的体系结构与设置基于端口号的虚拟主机
    Tomcat的设置4——Tomcat的体系结构与设置基于端口号的虚拟主机
    Tomcat的设置4——Tomcat的体系结构与设置基于端口号的虚拟主机
    Tomcat的设置4——Tomcat的体系结构与设置基于端口号的虚拟主机
  • 原文地址:https://www.cnblogs.com/fansik/p/7651350.html
Copyright © 2011-2022 走看看