zoukankan      html  css  js  c++  java
  • 第十一讲:集合

    集合

    概念:

    set集合是python中一种基本数据类型,分为可变集合和不可变集合两种。集合是无序不重复元素集,包括创建集合set,向集合中添加元素,删除集合中的元素,求集合的交集,并集,差集等操作。

    可变集合:需要的参数必须是迭代器类型,如序列,字典,然后转换成无序不重复的元素集。由于集合是不重复的,所以可以对字符串,列表,元素进行去重操作。

    不可变集合:集合中的元素不可以被改变,不能做插入和删除操作,其他方法和可变集合基本相同。

    1、创建集合:

    创建空集合:

    s=set()
    
    ss=set([])
    
    st=set(())

    创建非空集合:参数必须是序列(字符串,列表,元素),字典,不能是数值类型

    #字符串做参数
    s1=set('hellopython')
    print (s1)
    
    #列表做参数
    s2=set([1,2,3,4])
    print (s2)
    
    #元素做参数
    s3=set((1,2,3,4))
    print (s3)
    
    #字典做参数
    s4=set({'name':'cwx','age':18})
    print(s4)
    
    #set集合做参数 s5
    =set(s3) print (s3)

    注意:字典转set集合,只取字典的key,相当于将字典中的dict.keys()列表转化成set集合。

    2、添加集合元素(add,update)

    add():将要添加的元素作为一个整体添加到集合中。
    update():把要传入的元素拆分成单个字符,存于集合中,并去掉重复的
    #add添加元素,作为一个整体添加到集合中
    sTest=set('one')
    sTest.add('Two')
    print ('add添加后的元素',sTest)
    
    #update添加元素,拆分单个字符,去掉重复字符
    sTest1=set('one')
    sTest1.update('Two')
    print ('update添加后的元素',sTest1)

    运行结果:
    add添加后的元素 {'Two', 'e', 'o', 'n'}
    update添加后的元素 {'e', 'w', 'T', 'o', 'n'}

    3、删除集合的元素(remove、discard、pop)

    remove:确保元素存在,不存在则抛出KeyError异常

    sTest=set('helloy')
    sTest.remove('y')
    print ('删除后的集合是:',sTest)

    sTest.remove('a')
    print ('删除后的集合是:',sTest)

    运行结果:
    删除后的集合是: {'e', 'l', 'h', 'o'}

    Traceback (most recent call last):
      File "E:/workplace/2019pratice/practice1.py", line 456, in <module>
        sTest.remove('a')
    KeyError: 'a'

    discard:如果元素存在则删除,如果不存在则什么也没做,该函数没有返回值

    sTest=set('helloy')
    sTest.discard('y')
    print ('discard删除元素后的集合',sTest)   #元素存在则删除
    sTest.discard('a')
    print ('discard删除元素后的集合',sTest)   #元素不存在什么也没做

    pop:随机删除集合中的某个元素,如集合为空则抛出KeyError异常

    sTest=set('helloy')
    sTest.pop()
    print ('pop删除元素后的集合',sTest)   #随机删除集合中的元素
    
    sTest1=set()
    sTest1.pop()
    print ('pop删除元素后的集合',sTest)   #集合为空则抛出KeyError异常

    运行结果:
    pop删除元素后的集合 {'l', 'h', 'y', 'o'}
      File "E:/workplace/2019pratice/practice1.py", line 464, in <module>
        sTest1.pop()
    KeyError: 'pop from an empty set'

     clear:清空集合元素

    sTest=set('helloy')
    sTest.clear()
    print ('清空后的集合是',sTest)

    运行结果:
    清空后的集合是 set()

    5、遍历集合

    #for遍历集合元素
    sTest = set(['e', 'two', 'o', 'n', '1', '3', '2']) for i in sTest: print (i)

    运行结果:
    2
    n
    3
    1
    e
    o
    two
    # 带索引序号的遍历:
    sTest = set(['e', 'two', 'o', 'n', '1', '3', '2'])
    for index,elem in enumerate(sTest):
        print ('元素的索引是',index,'对应的元素是',elem)

    运行结果:
    元素的索引是 0 对应的元素是 e
    元素的索引是 1 对应的元素是 o
    元素的索引是 2 对应的元素是 3
    元素的索引是 3 对应的元素是 1
    元素的索引是 4 对应的元素是 n
    元素的索引是 5 对应的元素是 two
    元素的索引是 6 对应的元素是 2

    6、集合与序列(字符串,列表,元素)间的转换:(序列转集合,重复会被去掉)

    集合与字符串的转换:

    testStr = 'python is good'
    # 字符串转集合
    st=set(testStr)
    print ('字符串转集合后:',st)
    
    # 集合转字符串,str()
    s=str(st)
    print ('集合转字符串后:',s)
    
    # 集合转字符串,join()
    s1=''.join(st)
    print (s1)
    
    
    运行结果:
    字符串转集合后: {'o', 'p', 'y', 's', 't', 'd', 'h', 'i', 'n', ' ', 'g'}
    集合转字符串后: {'o', 'p', 'y', 's', 't', 'd', 'h', 'i', 'n', ' ', 'g'}
    opystdhin g

    集合与列表的转换:

    listTest = [1, 2, 3, 2, 'a', 'b']
    # 列表转集合
    slist=set(listTest)
    print ('列表转集合:',slist)
    
    # 集合转列表
    list1=list(slist)
    print ('集合转列表:',list1)

    运行结果:
    列表转集合: {'a', 1, 2, 3, 'b'}
    集合转列表: ['a', 1, 2, 3, 'b']

    集合与元组的转换:

    tupTest = (1, 2, 3, 2, 'a', 'b')
    # 元组转集合
    stupe=set(tupTest)
    print ('列表转集合:',stupe)
    
    # 集合转元组
    tupe1=tuple(stupe)
    print ('集合转元组:',tupe1)
    
    
    运行结果:
    
    列表转集合: {1, 2, 3, 'a', 'b'}
    集合转元组: (1, 2, 3, 'a', 'b')

    练习:结合set对象,列表某个list中所有元素出现的个数

    listB=['a','b','c','a','b','a']
    for i in set(listB):
        print (i,'出现%d次'%listB.count(i))
    
    运行结果:
    a 出现3次
    c 出现1次
    b 出现2次

    7、集合间的操作:交集(&)、并集(|)、差集(-)

    交集(&):两个集合共同元素组成的集合

    s1=set([1,2,3])
    s2=set([1,3,4,5])
    print ('两个集合的交集是',s1&s2)     #交集
    
    运行结果:
    两个集合的交集是 {1, 3}

    并集(|):两个集合所有的,并去掉重复的元素组成的集合

    s1=set([1,2,3])
    s2=set([1,3,4,5])
    print ('两个集合的并集是',s1|s2)     #并集
    
    运行结果:
    两个集合的并集是 {1, 2, 3, 4, 5}

    差集(-):在集合1但不在集合2中组成的集合

    s1=set([1,2,3])
    s2=set([1,3,4,5])
    print ('两个集合的差集是',s1-s2)     #差集
    
    运行结果:
    两个集合的差集是 {2}

    8、集合间的运算: >、<、、>=、<=、!=、==(==:判断一个集合是否完全包含另一个集合)

    s1=set([1,2,3])
    s2=set([1,2,3,4,5])
    print (s1>s2)
    print (s1<s2)
    print (s1==s2)
    
    
    运行结果:
    False
    True
    False

    判断父亲集合函数:issuperset(),等同于>符号

    判断是否是子集函数:issubset(),等同于<符号

    s1=set([1,2,3])
    s2=set([1,3,4,5])
    s3=set([1,3])
    print (s2.issuperset(s3))
    print (s3.issubset(s2))
    print (s2.issuperset(s1))
    print (s1.issubset(s2))
    
    
    运行结果:
    True
    True
    False
    False
  • 相关阅读:
    python调试代码好的方法
    Java保留两位小数的几种写法总结
    SPRING BOOT 项目中使用<SCOPE>PROVIDED</SCOPE>打包成WAR到TOMCAT运行出现的问题总结
    Spring Boot整合Thrift RPC
    Thrift语法参考
    Thrift中enum的一些探究
    Thrift入门及Java实例演示
    xcrun: error: unable to find utility "xctest", not a developer tool or in PATH
    Composer: Command Not Found
    Mac安装thrift因bison报错的解决办法
  • 原文地址:https://www.cnblogs.com/wenxiacui/p/11032349.html
Copyright © 2011-2022 走看看