面向对象的集合:

#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. UVa 133,发放救济金

    沿用前一个题的思路: 用left记录剩下的点,直到全部选完. 这里我的问题是,我一直pos = (pos + f + n)%n,这里的问题是对于B点来说,开始的位置是1,就成了(1+(-1) +n) ...

  2. C++运算法优先级

  3. 将具有关联关系的两个表从hibernate查询出来转成json对象时报错

    第一篇文章: 相信大家做过JSON相关的东西对这个异常并不陌生,这个异常是由于JSONObject插件内部会无限拆解你传入的对象,直到没有可拆解为止,问题就在这,如果你传入的对象有外键关系,或者相互引 ...

  4. 2016年12月13日 星期二 --出埃及记 Exodus 21:8

    2016年12月13日 星期二 --出埃及记 Exodus 21:8 If she does not please the master who has selected her for himsel ...

  5. django cycle标签

    django 模板系统 有很多标签,其中cycle我觉得不好理解,至少网上文档也不好理解. 这些标签可以通过渲染模板文件而获得我们预期的效果和文字,常用的有如下这些标签: 标签:{% 标签名 %}{% ...

  6. strtr介绍

    strtr — 转换指定字符 string strtr ( string $str , string $from , string $to ) string strtr ( string $str , ...

  7. BZOJ 3674: 可持久化并查集加强版

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3674 题意:三种操作:(1)合并ab所在集合:(2)查询ab是否在一个集合:(3) ...

  8. Cheatsheet: 2014 01.15 ~ 01.30

    Web How to upload file in Node.js Create Echo Server in Node.js Near-Realtime Analytics with MongoDB ...

  9. C#在泛型类中,通过表达式树构造lambda表达式

    场景 最近对爬虫的数据库架构做调整,需要将数据迁移到MongoDB上去,需要重新实现一个针对MongoDB的Dao泛型类,好吧,动手开工,当实现删除操作的时候问题来了. 我们的删除操作定义如下:voi ...

  10. 51NOD1433] 0和5(数论,规律)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1433 数论关于3的倍数有一个推论,就是能被9整除的数的各位和都 ...