面向对象的集合:

#coding:utf-8
__author__ = 'similarface'
class Set:
'''
list实现集合,及其集合操作
'''
def __init__(self,value=[]):
self.data=[]
self.concat(value) def intersect(self,other):
'''
集合交集操作
:param other:
:return:交集
'''
res=[]
for x in self.data:
#x in 会调用__getitem__
if x in other:
res.append(x)
return Set(res) def union(self,other):
'''
集合并集操作
:param other:
:return:并集
'''
#复制自身的一个列表
res=self.data[:]
for x in other:
if not x in res:
res.append(x)
return Set(res) def concat(self,value):
for x in value:
if not x in self.data:
self.data.append(x) def __len__(self):
return len(self.data) def __getitem__(self, item):
return self.data[item] def __and__(self, other):
return self.intersect(other) def __or__(self, other):
return self.union(other) def __repr__(self):
return '<Set:'+repr(self.data)+'>' if __name__=="__main__":
users1=Set(['jpan','ch','en'])
users2=Set(['ta','ch','hk'])
a=users1 & users2
b=users1 | users2 tf='ch' in users1
a.data
b.data #coding:utf-8
__author__ = 'similarface'
from DataStruct.set import Set
'''
使用字典将集合性能优化为线性的 该类继承上面的Set类
'''
class Set(Set):
def __init__(self,value=[]):
self.data={}
self.concat(value) def concat(self,value):
for x in value:
self.data[x]=None def intersect(self,other):
'''
求交集操作
:param other:
:return:交集
'''
res={}
for x in other:
if x in self.data:
res[x]=None
return Set(res.keys()) def union(self,other):
'''
求并集操作
:param other:
:return:并集
'''
res={}
for x in other:
res[x]=None
for x in self.data.keys():
res[x]=None
return Set(res.keys()) def __getitem__(self, item):
return list(self.data.keys())[item] def __repr__(self):
return '<Set:%r>' % list(self.data.keys()) if __name__=="__main__":
users1=Set(['jpan','ch','en'])
users2=Set(['ta','ch','hk'])
a=users1 & users2
b=users1 | users2 tf='ch' in users1
a.data
b.data

python 集合的更多相关文章

  1. Python 集合set添加删除、交集、并集、集合操作符号

    在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1. ...

  2. [转]python集合set

    Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 来源网 ...

  3. python集合使用范例的代码

    在代码过程中中,将代码过程中比较好的代码段珍藏起来,如下的代码是关于python集合使用范例的代码,希望能对大伙有用. # sets are unordered collections of uniq ...

  4. python集合与字典的用法

    python集合与字典的用法 集合: 1.增加  add 2.删除   •del 删除集合 •discard(常用)删除集合中的元素  #删除一个不存在的元素不会报错 •remove 删除一个不存在的 ...

  5. Python 集合内置函数大全(非常全!)

    Python集合内置函数操作大全 集合(s).方法名 等价符号 方法说明 s.issubset(t) s <= t 子集测试(允许不严格意义上的子集):s 中所有的元素都是 t 的成员   s ...

  6. Python 集合set()添加删除、交集、并集、集合操作详解

    集合:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次.每个元素的地位都是相同的,元素之间是无序的. 创建集合set python set类是在python的sets模块中,大家现在使 ...

  7. python集合可以进行相减

    python集合可以进行相减 student = {'tom','jim','mary','tom','jack','rose'} print(student) print('rose' in stu ...

  8. Python集合类型的操作与应用

    Python集合类型的操作与应用 一.Python集合类型 Python中的集合类型是一个包含0个或多个数据项的无序的.不重复的数据组合,其中,元素类型只能是固定数据类型,如整数.浮点数.字符串.元组 ...

  9. Python - 集合 - 第十一天

    Python 集合 集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建 ...

  10. python集合set,交集,并集,差集,对称差集,子集和超集

    python集合set,交集,并集,差集,对称差集,子集和超集 x = {1, 2, 3, 4} y = {2, 4, 5, 6} # 交集(取x中与y中相同部分) print(x.intersect ...

随机推荐

  1. Linux 线程与进程,以及通信

    http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-i ...

  2. Java中的类加载器

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16102131 从java的动态性到类加载机制   我们知道,Java是一种动态语言.那么怎 ...

  3. Android中直播视频技术探究之---视频直播服务端环境搭建(Nginx+RTMP)

    一.前言 前面介绍了Android中视频直播中的一个重要类ByteBuffer,不了解的同学可以 点击查看 到这里开始,我们开始动手开发了,因为我们后续肯定是需要直播视频功能,然后把视频推流到服务端, ...

  4. C#json 解析

    Json样例一: string jsonText= {Code)\/)\/"}}} JObject jo = JObject.Parse(jsonText); string strCode= ...

  5. C#实现随机抽奖和冒泡排序

    随机抽奖程序 string[] s = new string[] { "A", "B", "C", "D", " ...

  6. 如何在PADS的封装中做非金属化孔

    在设置封装的pads stacks的页面里,diameter,drill,plated三个项目(盘外径60mil,孔30mil) diameter:60,drill:30,plated:checked ...

  7. EasyUI--messager

    1. alert 方法 <script type="text/javascript"> $( function() { $.messager.alert("调 ...

  8. Spring MVC 流程图

    Spring MVC 流程图 分类: Spring2014-02-23 19:49 9106人阅读 评论(2) 收藏 举报 spring mvc Spring MVC工作流程图   图一   图二  ...

  9. 移动端 移动web屏幕适配方案 随不同宽度的屏幕而改变

    链接地址1:http://www.cnblogs.com/zjzhome/p/4802157.html 链接地址2:http://www.html-js.com/article/Mobile-term ...

  10. php wamp 配置虚拟主机

    apeach  配置: 还有是:E:\wamp\bin\apache\Apache2.4.4\conf 目录下有个 http.conf文件中,有一个需要取消注释, # Virtual hostsInc ...