zoukankan      html  css  js  c++  java
  • (转)Python中集合(set)的基本操作以及一些常见的用法

    原文:http://blog.51cto.com/10616534/1944841 

     Python除了List、Tuple、Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是:集合里边的元素是不可重复的并且集合内的元素还是无序的,所以一般情况下集合常用的两个场景是:1.去重(如:列表去重);2.关系测试(如:取交集、取并集、取差集等)

     1)集合包含一组无序的对象,可以使用set()函数来像下边的方式一样来创建集合

    #!/usr/bin/env python
    # -*-coding:UTF-8 -*-
    #创建一个数值集合
    set1 = set([1,2,3,4])
    #创建一个字符集合  注意:从输出结果中我们会看到l只出现了一次
    set2 = set("HelloWorld!")
    print('set1 %s' % set1)
    print('set2 %s' % set2)
    '''运行结果
    set1 {1, 2, 3, 4}
    set2 {'d', 'o', 'e', 'H', 'l', 'W', 'r', '!'}
    '''
     

     2)去重,即可能在一些特殊的场景需要用到,实现去除掉列表中的重复元素

    #!/usr/bin/env python
    # -*-coding:UTF-8 -*-
    #列表去重比较简单
    list1 = [3,3,3,4,5,3]
    set1 = set(list1)
    print("list1去重后的set集合:",set1)
    #将如中后的集合在转化成一个新列表
    new_list = [i for i in set1]
    print("list1去重后的list列表:",new_list)
    '''运行结果
    list1去重后的set集合: {3, 4, 5}
    list1去重后的list列表: [3, 4, 5]
    '''
     

     3)关系测试,即一些集合的最基本操作,如集合取交集、取并集、取差集、判断一个集合是不是另一个集合的子集或者父集等。

    #!/usr/bin/env python
    # -*-coding:UTF-8 -*-
    set1 = set([1,2,3,4,5])
    set2 = set([3,4,5,6,7])
    #取交集
    set3 = set1.intersection(set2)
    # set3 = set1 & ste2  #取交集,与intersection()效果相同
    print("set1和set2的交集为:",set3)
    #取并集
    set4 = set1.union(set2)
    #set4 = set1 | set2   #取并集,与union()效果相同
    print("set1和set2的交集为:",set4)
    #取差集    这个地方要稍稍注意一下,防止进坑
    set5 = set1.difference(set2)
    #set5 = set1 - set2  #取差集 ,与difference()效果相同
    print("set1与set2的差集为:",set5)
    set6 = set2.difference(set1)
    print("set2与set1的差集为:",set6)
    #对称差集 -----即去掉两个集合的共同的部分
    set7 = set1.symmetric_difference(set2)
    #set7 = set1 ^ set2  #对称差集, 与symmetric_difference()效果相同
    print("去掉两个集合的共同的部分:",set7)
    #判断是否是set1是否是set2的子集
    flag1 = set1.issubset(set2)
    print("print(判断是否是set1是否是set2的子集):",flag1)
    #判断是否是set1是否是set2的父集
    flag2 = set1.issuperset(set2)
    print("判断是否是set1是否是set2的父集:",flag2)
    '''运行结果如下:
    set1和set2的交集为: {3, 4, 5}
    set1和set2的交集为: {1, 2, 3, 4, 5, 6, 7}
    set1与set2的差集为: {1, 2}
    set2与set1的差集为: {6, 7}
    去掉两个集合的共同的部分: {1, 2, 6, 7}
    print(判断是否是set1是否是set2的子集): False
    判断是否是set1是否是set2的父集: False
    '''
     

     4)集合的一些其它基本操作

    #!/usr/bin/env python
    # -*-coding:UTF-8 -*-
    #输出集合中的元素
    #注意集合与列表和元组不同,集合是无序的,所以无法通过数字进行索引获取某一个元素的值
    set1 = set([1,2,3,4])
    for i in set1:
        print (i)
    #向集合中添加一个元素
    set1.add(5)
    print("向集合中添加一个元素5后:",set1)
    #删除一个元素
    set1.remove(1)
    print("从集合中删除元素1后:",set1)
    #计算集合的长度
    l = len(set1)
    print("集合的长度为:",l)
    #判断某个元素是否在集合内
    flag1 = 2 in set1
    print("判断元素2是否在集合内:",flag1)
    #断某个元素是否不在集合内
    flag2 = 3 not in set1
    print("判断元素3是否不在集合内:",flag2)
    #对集合进行一次浅复制
    set2 = set1.copy()
    print("对集合进行一次浅复制:",set2)
    '''运行结果如下:
    1
    2
    3
    4
    向集合中添加一个元素5后: {1, 2, 3, 4, 5}
    从集合中删除元素1后: {2, 3, 4, 5}
    集合的长度为: 4
    判断元素2是否在集合内: True
    判断元素3是否不在集合内: False
    对集合进行一次浅复制: {2, 3, 4, 5}
    '''
     

    以上是集合(set)的一些比较常用操作的示例,对于集合的一些其它操作,这里就不在一一举例说明了。

  • 相关阅读:
    软件测试的重要性
    软件测试二三事
    白盒测试总结
    黑盒测试总结
    闰年测试以及非法输入的处理方法
    软件测试(3)-基于等价类划分的一个小例子
    第二周课堂小结以及习题思考
    软件测试人员的自身修养
    软件测试的目的和方法
    第七周学习笔记之灰盒测试
  • 原文地址:https://www.cnblogs.com/liujiacai/p/9542200.html
Copyright © 2011-2022 走看看