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']

最新文章

  1. Atitit Data Matrix dm码的原理与特点
  2. 关于java的格式输出控制
  3. IBM Power PC安装sysbench 执行mysql基准测试 --- sysbench安装
  4. epoll实现压测工具
  5. spring发送邮件(多人接收或抄送多少带附件发送)
  6. [反汇编练习] 160个CrackMe之022
  7. LLDB中的小技巧
  8. Laravel-高级篇-Artisan
  9. 201521123101 《Java程序设计》第6周学习总结
  10. H5缓存
  11. BZOJ 3993: [SDOI2015]星际战争 [二分答案 二分图]
  12. PLSQL Developer 没有64位版本 + 找不到 msvcr71.dll
  13. python numpy模块使用笔记(更新)
  14. live555运行时报错:StreamParser internal error ( 86451 + 64000 > 150000)
  15. 不失一般性和快捷性地判定决策单调(洛谷P1912 [NOI2009]诗人小G)(动态规划,决策单调性,单调队列)
  16. would you please...could you please...两句区别是什么?
  17. 【总结】前端框架:react还是vue?
  18. Java-子类扩展父类功能
  19. UVA10519 - !! Really Strange !!(数论+高精度)
  20. Shell升级,/bin/bash版本号4.1到4.3

热门文章

  1. Android开发学习总结(六)—— APK反编译
  2. Spring-Context之二:使用Spring提供的测试框架进行测试
  3. win2003 Enterprise Edition sp2 企业版序列号
  4. atitit.修复xp 操作系统--重装系统--保留原来文件不丢失
  5. iOS开发-NSURLSession详解
  6. Spring3.2.4集成quartz2.2.1定时任务(demo).
  7. Leetcode 58 Length of Last Word 字符串
  8. python元类
  9. wamp的配置
  10. 聊聊 App Store 的产品和推广运营攻略