zoukankan      html  css  js  c++  java
  • python 集合set

    python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.  

    下面来点简单的小例子说明把。  
      
    >>> x = set('spam')  
    >>> y = set(['h','a','m'])  
    >>> x, y  
    (set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']))  
      
    再来些小应用。  
      
    >>> x & y # 交集  
    set(['a', 'm'])  
      
    >>> x | y # 并集  
    set(['a', 'p', 's', 'h', 'm'])  
      
    >>> x - y # 差集  
    set(['p', 's'])  

    a = t | s          # t 和 s的并集  
      
    b = t & s          # t 和 s的交集  
      
    c = t – s          # 求差集(项在t中,但不在s中)  
      
    d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)  
    #Python中,使用相应的优化函数可以大大的提高系统的运行效率。比如下面的这个例子:
    from time import time
    lista=[1,2, 3, 4,5, 6, 7 ,8, 9, 10, 25, 50, 36, 43, 52]
    listb=[2, 4, 6, 9, 36]
    def noset_test():
        t = time()
        filter=[]
        for i in range(100000):
            for a in lista:
                for b in listb:
                    if a==b:
                        filter.append(a)
        print 'no set total run time:'
        print time() -t
     
     
    def set_test():
        t1 = time()
        for i in range(100000):
            list(set(lista)&set(listb))
     
        print "set total run time:"
        print time() - t1
     
    noset_test();
    set_test();
     
    输出为:
    no set total run time:
    0.365000009537
    set total run time:
    0.15700006485
     
    通过使用set,运行的时间明显的有缩减。
    engineers = set(['John', 'Jane', 'Jack', 'Janice'])
    programmers = set(['Jack', 'Sam', 'Susan', 'Janice'])
    managers = set(['Jane', 'Jack', 'Susan', 'Zack'])
    employees = list(engineers | programmers | managers)           # union
    engineering_management = list(engineers & managers)            # intersection
    fulltime_management = list(managers - engineers - programmers) # difference
    print"employees", employees
    print"engineering_management" ,engineering_management
    print "fulltime_management", fulltime_management
     
    输出为:
    employees ['Jack', 'Sam', 'Susan', 'Jane', 'Janice', 'John', 'Zack']
    engineering_management ['Jane', 'Jack']
    fulltime_management ['Zack']
  • 相关阅读:
    Vi编辑器常用命令
    Notepad++常用命令——大大提升编码效率
    得到python某个模块的路径
    常用软件生命周期模型
    最常用的python实现
    Vi编辑器常用命令
    季羡林谈人生——意义和价值
    工业标准的品质也已成为开源世界中的范例之一
    《葵花宝典:WPF自学手册》三大网点书评集萃
    博文视点大讲堂37期 ——It's Android Time:程序员创富有道!
  • 原文地址:https://www.cnblogs.com/zhxhdean/p/4564075.html
Copyright © 2011-2022 走看看