首页 > 其他 > 详细

数据类型之集合

时间:2020-12-04 08:57:27      阅读:24      评论:0      收藏:0      [点我收藏+]

一、集合的作用

    主要作用就是关系运算和去重,与列表(list)、元组(tuple)、字典(dict)一样都可以存放多个值

二、集合的定义

  定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点:

    1:每个元素必须是不可变类型

    2:集合内没有重复的元素

    3:集合内元素无序

   s {1,2,3,4# 本质 s = set({1,2,3,4})

  注意1:列表类型是索引对应值,字典是key对应值,均可以取得单个指定的值,而集合类型既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重与关系元素,根本没有取出单个指定值这种需求。
  
注意2:{}既可以用于定义dict,也可以用于定义集合,但是字典内的元素必须是key:value的格式,现在我们想定义一个空字典和空集合,该如何准确去定义两者?
  
d = {} # 默认是空字典
  s = set() # 这才是定义空集合

三、数据类型

  注意:但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型

    s = set([1, 2, 3, 4])

    s1 = set((1, 2, 3, 4))

    s2 = set({‘name‘: ‘jason‘})

    s3 = set(‘egon‘)

    print(s,s1,s2,s3)

  输出结果:{1, 2, 3, 4} {1, 2, 3, 4} {‘name‘} {‘n‘, ‘e‘, ‘g‘, ‘o‘}

四、内置方法

  1、关系运算:&取交集、|取并集、-取差集、^取对称差集

    注意:下面的关系运算可以用符号进行,也有相应的方法进行

    定义两个集合:friends1 =  {"zero","kevin","jason","egon"}

           friends2 = {"Jy","ricky","jason","egon"}

    1.1 用&取交集:取出friends1和friends2相同的值

      print(friends1 & friends2)

      print(friends1.intersection(friends2))

      输出结果:{‘jason‘, ‘egon‘}

    1.2 用 | 取并集:取出friends1和friends2所有的值,相同的值至保留一个

      print(friends1 | friends2)

      print(friends1.union(friends2))

      输出结果:{‘Jy‘, ‘jason‘, ‘egon‘, ‘kevin‘, ‘zero‘, ‘ricky‘}

    1.3 用 - 取差集:取出friends1独有的值合取出friends2独有的值

      注意:取差集时需要取出的值必须放在前面

      print(friends1 - friends2)

      print(friends1.difference(friends2))

      输出结果:{‘zero‘, ‘kevin‘}

      print(friends2 - friends1)

      print(friends1.difference(friends2))

      输出结果:{‘Jy‘, ‘ricky‘}

    1.4 用 ^ 取对称差集:取出friends1和friends2独有的值(去掉他们共有的值)

      print(friends1 ^ friends2)

      print(friends1.symmetric_difference(friends2))

      输出结果:{‘zero‘, ‘ricky‘, ‘kevin‘, ‘Jy‘}

    1.5 父子集:一个集合是否包含另一个集合(一个集合包含另一个集合为父子,如果相同它们互为父子)

         包含则返回True,不包含则返回False

      案例一:

          friends1 = {"zero","kevin","jason","egon"}

          friends2 = {"zero","kevin","jason"}

          print(friends1 > friends2)   #friends1 包含friends2,表示friends1 是friends2的父亲,则返回True

          print(friends1.issuperset(friends2))

          输出结果:True

          print(friends2 < friends1)  #friends2不包含friends1,表示friends2是friends1的儿子,则返回True

          print(friends2.issubset(friends1))

          输出结果:False

          print(friends1 == friends2)  #如果friends1和friends2集合中的值一样,表示他们互为父子,则返回True

          print(friends2.issubset(friends1))   # 表示friends2是friends1的父亲

          print(friends1.issubset(friends2))   #表示friends1是friends2的父亲

          输出结果:True

          

  

 
 
 

 

数据类型之集合

原文:https://www.cnblogs.com/xialiang37/p/14083731.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!