python 集合
面向对象的集合:
- #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 集合的更多相关文章
- Python 集合set添加删除、交集、并集、集合操作符号
在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1. ...
- [转]python集合set
Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 来源网 ...
- python集合使用范例的代码
在代码过程中中,将代码过程中比较好的代码段珍藏起来,如下的代码是关于python集合使用范例的代码,希望能对大伙有用. # sets are unordered collections of uniq ...
- python集合与字典的用法
python集合与字典的用法 集合: 1.增加 add 2.删除 •del 删除集合 •discard(常用)删除集合中的元素 #删除一个不存在的元素不会报错 •remove 删除一个不存在的 ...
- Python 集合内置函数大全(非常全!)
Python集合内置函数操作大全 集合(s).方法名 等价符号 方法说明 s.issubset(t) s <= t 子集测试(允许不严格意义上的子集):s 中所有的元素都是 t 的成员 s ...
- Python 集合set()添加删除、交集、并集、集合操作详解
集合:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次.每个元素的地位都是相同的,元素之间是无序的. 创建集合set python set类是在python的sets模块中,大家现在使 ...
- python集合可以进行相减
python集合可以进行相减 student = {'tom','jim','mary','tom','jack','rose'} print(student) print('rose' in stu ...
- Python集合类型的操作与应用
Python集合类型的操作与应用 一.Python集合类型 Python中的集合类型是一个包含0个或多个数据项的无序的.不重复的数据组合,其中,元素类型只能是固定数据类型,如整数.浮点数.字符串.元组 ...
- Python - 集合 - 第十一天
Python 集合 集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建 ...
- python集合set,交集,并集,差集,对称差集,子集和超集
python集合set,交集,并集,差集,对称差集,子集和超集 x = {1, 2, 3, 4} y = {2, 4, 5, 6} # 交集(取x中与y中相同部分) print(x.intersect ...
随机推荐
- Python科学计算环境推荐——Anaconda
最近在用Python做中文自然语言处理.使用的IDE是PyCharm.PyCharm确实是Python开发之首选,但用于科学计算方面,还略有欠缺.为此我尝试过Enthought Canopy,但Can ...
- POJ Sky Code 莫比乌斯反演
N. Sky Code Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO for ...
- Winform容器标签 打印标签 对话框控件
一.容器标签 布局: Anchor:锁定位置,指定与窗口容器的边缘位置,会随着窗口大小的改变而改变: Dock:填充窗口的位置.一般与容器标签同时使用. 1.Panel:对控件进行分组.可以独立布局, ...
- C#获取当前页面的url
C#获取当前页面的url string a= Request.ApplicationPath; // / string b = Request.CurrentExecutionFilePath; // ...
- HDU4549 M斐波那契数列 矩阵快速幂+欧拉函数+欧拉定理
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ...
- AOD.net
ADO.NET中的五个主要对象 Connection 物件Connection 对象主要是开启程序和数据库之间的连结.没有利用连结对象将数据库打开,是无法从数据库中取得数据的.这个物件在ADO.NET ...
- CodeForces 552C Vanya and Scales
Vanya and Scales Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u S ...
- Maven 3.3.9在Windows上的安装
开始学Maven了,可是我一个项目都木有做过.听过Maven 的大名,用来构建项目的. 下面记录下我安装Maven的过程 1.确认电脑上安装了JDK 在cmd下执行下列命令: java –versio ...
- iOS添加广告的主要方法
//用户取消正在执行的广告时 调用 - (void)cancelBannerViewAction { NSLog(@"Banner was cancelled!"); self.a ...
- poj 3304线段与直线相交
http://poj.org/problem?id=3304 Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...