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 ...
随机推荐
- 0. WP8.1学习笔记
应用程序生命周期: 运行: 在程序NotRunning状态下点击图标,应用将处于Running状态,这会触发一个Actived事件 挂起: 在程序Running状态下, 点击返回键或win键会触发一个 ...
- acdream 1148 GCD SUM 莫比乌斯反演 ansx,ansy
GCD SUM Time Limit: 8000/4000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatis ...
- php 修改、增加xml结点属性的实现代码
php修改xml结点属性,增加xml结点属性的代码,有需要的朋友可以参考下 php 修改 增加xml结点属性的代码,供大家学习参考.php修改xml结点属性,增加xml结点属性的代码,有需要的朋友,参 ...
- for循环嵌套的穷举,迭代,以及while的使用和for的转换
for循环的穷举.解决多种方法做种组合问题,代替人脑的大量计算 穷举例子 迭代,寻找一定的规律.然后利用循环找出结果 迭代举例 以五个小朋友3岁,之前的每一个小朋友都比序号在后的小朋友大两岁.温,第一 ...
- CentOS系统识别NTFS分区的移动硬盘
第一步:下载rpmforge,下载对应的版本,就是对应CentOS版本,还有32位与64位也要对应上.rpmforge拥有4000多种CentOS的软件包,被CentOS社区认为是最安全也是最稳定的一 ...
- 【MySQL】MySQL复制表结构、表数据
平常,复制.备份表,一般都直接操作IDE完成.但有时,一些初始化数据的脚本,在操作数据前,最好备份下操作表的结构.数据,不至于出错了被置于为难的境地. 所以复制表结构.表数据的语句就派上用场. > ...
- Python 2.7.9 Demo - 获取调用的参数
#coding=utf-8 #!/usr/bin/python import sys; print("The command line parameters are : "); f ...
- _in、_out。。。
_in 输入参数_out 输出参数_opt 参数是可选的,就是可以为NULL_ecount 所指向的缓存的元素个素 也就是括号里的数字
- Q查询
一.Complex lookups with Q objects(Q对象的复杂查询) 仅仅靠单一的关键字参数查询已经很难满足查询要求.此时Django为我们提供了Q查询: class Q 1.Q对象( ...
- [Java解惑]类
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...