zoukankan      html  css  js  c++  java
  • Python数据结构:集合

    • 集合的定义

     使用大括号,并且里面必须有初始值,否则是dict字典类型

    • 集合的特征

    集合内部的元素无序,所以不能使用索引、切片等操作

    集合内部的元素具有唯一性,不允许元素重复出现

    集合内部的元素,只能存放int, float, str, tuple等必须是可哈希的数据,set类型本身不可哈希

    s1 = {1,2,3,'a','b','c',7,8,9}
    s2 = {}
    
    print(type(s1)) #输出<class 'set'>
    print(type(s2)) #输出<class 'dict'>
    
    for i in s1:
        print(i,end=' ') #输出1 2 3 b 7 8 9 a c,可见set是无序的
    •  多循环的集合内涵
    s1 = {1,2,3}
    s2 = {'i', 'love', 'you'}
    
    s3 = {m * n for m in s2 for n in s1} #相当于把s2中的每个元素乘以1/2/3
    print(s3) #输出{'iii', 'lovelove', 'you', 'youyou', 'i', 'youyouyou', 'ii', 'love', 'lovelovelove'}
    •  删除元素
    s = {'a','b','c','d','e','f'}
    # s.remove('k') #remove删除不存在的元素报错keyerror
    s.discard('k') #discard删除不存在的元素不报错,只是删除失败而已
    • 交叉并补

    交集intersection

    差集difference

    并集union

    子集issubset:检查一个集合是否为另一个集合的子集

    超集issuperset:检查一个集合是否为另一个集合的超集(如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集,反过来,S2是S1的子集)

    s1 = {1,2,3,4,5,6}
    s2 = {5,6,7,8,9,0}
    
    s3 = s1.intersection(s2) #s1与s2的交集
    print(s3) #输出{5, 6}
    
    s4 = s1.difference(s2) #s1与s2的差集,相当于s1-s2
    print(s4) #输出{1, 2, 3, 4}
    
    s5 = s1.union(s2) #s1与s2的并集
    print(s5) #输出{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    
    i1 = s1.issubset(s2) #判断s2是否为s1的子集,i1为False
    i2 = s1.issuperset(s2) #判断s2是否为s1的超集,i2为False
    •  冰冻集合

    不可以进行任何修改操作的集合,其他属性与集合完全一致。

    s = {1,2,3}
    s = frozenset(s)
    print(s) #输出frozenset({1, 2, 3})
  • 相关阅读:
    Ajax基础:3.Json
    Head First Design Patterns State Pattern
    Head First Design Patterns Template Method Pattern
    Articles For CSS Related
    Head First Design Patterns Decorator Pattern
    代码审查工具
    How To Be More Active In A Group
    Head First Design Patterns Factory Method Pattern
    Head First Design Patterns Composite Pattern
    Tech Articles
  • 原文地址:https://www.cnblogs.com/mryanzhao/p/9511906.html
Copyright © 2011-2022 走看看