zoukankan      html  css  js  c++  java
  • Python学习笔记(八)—集合的学习

    集合(set)是一个无序不重复元素的序列。

    基本功能是进行成员关系测试和删除重复元素。

    1、集合的作用

    • 它可以把一个列表中重复的数据去掉,而不需要你再写判断
    • 可以做关系测试,比如说有两个科目,一个数学,一个是化学,想找出来既学习了数学又学习了化学的同学,就可以用集合

    2、集合的定义:

    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

    创建格式:

    parame = {value01,value02,...}
    或者
    set(value)
    View Code

     实例:

    >>> set_one = {1,2,3,4,5,6}
    >>> type(set_one)
    <type 'set'>
    >>> set_two = set([1,2,3,4])
    >>> type(set_two)
    <type 'set'>
    >>> print set_one
    set([1, 2, 3, 4, 5, 6])
    >>> print set_two
    set([1, 2, 3, 4])
    >>>
    View Code

    3、集合的添加

    添加集合有两种方式,一种是通过add方法添加,另外一种就是通过updata方法加入;

    集合add方法:是把要传入的元素做为一个整个添加到集合中,例如:

    >>> a = set("boy")
    >>> a
    set(['y', 'b', 'o'])
    >>> a.add("girl")
    >>> a
    set(['y', 'girl', 'b', 'o'])
    >>>
    View Code

    集合updata方法:是把要传入的元素拆分,做为个体传入到集合中,例如:

    >>> a = set("boy")
    >>> a
    set(['y', 'b', 'o'])
    >>> a.update("girl")
    >>> a
    set(['b', 'g', 'i', 'l', 'o', 'r', 'y'])
    >>>
    View Code

    4、集合的删除

    集合删除操作方法:

    remove:删除元素,如果元素不存在会报错

    >>> a
    set(['b', 'g', 'i', 'l', 'o', 'r', 'y'])
    >>> a.remove('y')
    >>> a
    set(['b', 'g', 'i', 'l', 'o', 'r'])
    >>>
    View Code

    集合删除操作方法:

    pop:删除一个随机的元素,并返回删除的元素

    >>> a = {1,2,3,4,5}
    >>> a
    set([1, 2, 3, 4, 5])
    >>> a.pop()
    1
    >>> a
    set([2, 3, 4, 5])
    >>>
    View Code

    集合删除操作方法:

    discard:如果删除的元素存在,删除,不存在不做处理

    >>> a = {1,2,3,4,5}
    >>> a
    set([1, 2, 3, 4, 5])
    >>> a.discard(4)
    >>> a
    set([1, 2, 3, 5])
    >>> a.discard(6)
    >>> a
    set([1, 2, 3, 5])
    >>>
    View Code

    5、集合运算

    取差集:在list中存在,在list2中没有的

    >>> list = {1,2,3,4,5}
    >>> list2 = {4,5,3,6,7}
    >>> list-list2
    set([1, 2])
    >>>
    View Code

    取交集:就是取list1和list2中都有的

    >>> list
    set([1, 2, 3, 4, 5])
    >>> list2
    set([3, 4, 5, 6, 7])
    >>> list & list2
    set([3, 4, 5])
    >>>
    View Code

    取并集:也就是把list1和list2合并了,然后去除重复的

    >>> list
    set([1, 2, 3, 4, 5])
    >>> list2
    set([3, 4, 5, 6, 7])
    >>> list | list2
    set([1, 2, 3, 4, 5, 6, 7])
    >>>
    View Code

    通过intersection取交集

    >>> list
    set([1, 2, 3, 4, 5])
    >>> list2
    set([3, 4, 5, 6, 7])
    >>> list.intersection(list2)
    set([3, 4, 5])
    >>>
    View Code

    通过union取并集

    >>> list
    set([1, 2, 3, 4, 5])
    >>> list2
    set([3, 4, 5, 6, 7])
    >>> list.union(list2)
    set([1, 2, 3, 4, 5, 6, 7])
    >>>
    View Code

    通过difference取差集

    >>> list
    set([1, 2, 3, 4, 5])
    >>> list2
    set([3, 4, 5, 6, 7])
    >>> list.difference(list2)
    set([1, 2])
    >>>
    View Code

    通过symmetric_difference取对称差集,即除去交集元素后的所有元素

     1 a = ['1','2','3','4']
     2 b = ['3','4','5','6']
     3 a = set(a)
     4 b = set(b)
     5 res =a.symmetric_difference(b)
     6 res1 = a^b
     7 print(res,res1)
     8 
     9 运行结果:
    10 {'1', '5', '2', '6'} {'1', '5', '2', '6'}
    View Code

    6、方法的判断

    >>> list1 = {1,2,3,4,5,6,9}
    >>> list2 = {1,2,3,6,1}
    >>> list3 = {1,2,3}

    issubset:判断list3是否是list1的子集

    >>> #判断list3是否是list1的子集
    ... list3.issubset(list1)
    True
    >>>
    View Code

    issuperset:判断list1是否是list3的父集

    >>> #判断list1是否是list3的父集
    ... list1.issuperset(list2)
    True
    >>>
    View Code

    isdisjoint:判断list1和list3是否有交集,有交集返回false,没有交集返回true

    >>> #判断list1和list3是否有交集
    ... list1.isdisjoint(list2)
    False
    View Code

    symmetric_difference:对称差集,输出两个列表中都没有的值,也就是把两个集合中相同的去掉

    >>> list1.symmetric_difference(list2)
    set([4, 5, 9])
    View Code
  • 相关阅读:
    StrutsTestCase 试用手记
    java版的SHA1
    看看junit在一个具体的项目中
    store/index.js中引入并注册modules目录中的js文件:require.context
    vue项目报错:$ is not defined
    状态合并:replaceState
    路由导航守卫中document.title = to.meta.title的作用
    vue路由中meta的作用
    BCryptPasswordEncoder加密与MD5加密
    滑块验证机制
  • 原文地址:https://www.cnblogs.com/beginner-boy/p/8671225.html
Copyright © 2011-2022 走看看