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 ...
随机推荐
- Spring 的优秀工具类盘点
文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...
- Android中scrollview嵌套HorizontalScrollView卡顿现象解决
开发中经验会遇到滑动里面嵌入滑动的问题,但是这种情况下触摸事件就会发生冲突.导致滑动非常卡,甚至出现程序停止响应.这种情况下我们一般需要重写view.下面给出重新scrollview的方法 publi ...
- 解析xml,几种方式
市面上解析xml分两种方式,1.dom 2.sax ,xml解析常见的一共有三种开发包,1.jaxp 2.jdom 3.dom4j,这三种方式最常用的是dom4j,jaxp和jdom很少有人用, ...
- MVC api json 格式
输出json var formatters = config.Formatters.Where(formatter => formatter.SupportedMediaTypes.Where( ...
- shell 中的>文件重定向符 和 标准输入、输出、错误以及 2&1 的含义*
http://www.cnblogs.com/chenmh/p/5382044.html 问:其中 的2>&1是怎么回事? . test.sh > test.log 2>&a ...
- 4-JS对象
js中哪些是对象 除了字符串.数字.false.true.null和undefined之外,JavaScript中的值都是对象 原型(prototype) 每一个JavaScript对象(null除外 ...
- 2016年2月18日 JAVA基础
运行JAVA之前,必须将系统环境变量进行配置. 如果是32位的计算机安装的JDK版本必须是32位的,如果是64位的计算机安装的JDK版本必须是64位的,两者不可忽视,以免程序无法正常启动. 具体更改方 ...
- CodeForces 373B Making Sequences is Fun
Making Sequences is Fun Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & ...
- js parseInt();parseFloat;Number()
1: parseInt( numString [, radix ] ) [测试浏览器:chromium && firefox] ①parseInt()函数用于将字符串转换为(十进制) ...
- FZU 2214 Knapsack problem(背包问题)
Description 题目描述 Given a set of n items, each with a weight w[i] and a value v[i], determine a way t ...