文档章节

python中针对序列A是否包含序列B的各种处理

Listjj117
 Listjj117
发布于 2014/01/03 10:54
字数 450
阅读 38
收藏 3
#!coding=utf-8
def containsAny(seq,aset):
    """
    检查序列seq是否含有aset中的项
    """
    for item in seq:
        if item in aset:return True
    return False

import itertools
def containsAnyItertools(seq,aset):
    """
    性能好点,但是本质和contansAny一样
    """
    for item in itertools.ifilter(aset.__contains__,seq):
        return True
    return False

def containsAnySet(seq,aset):
    """
    seq中的每个元素都要检测,没有短路特性
    """
    return bool(set(aset).intersection(seq))

def containsAllSet(seq,aset):
    """
    检测seq中是否包含aset的所有项
    """
    #相当于aset - seq,返回属于aset但是不输入seq的元素.不要和symmetric_difference搞混,
    # symmetric_difference是属于一个期中一个序列,但是不属于both的元素集合,a^b
    return not set(aset).difference(seq)

import string
notrans = string.maketrans('','') #不做转换,可以将第一个参数转换为第二个参数
def containsAnyStr(seq,aset):
    return len(aset) != len(aset.translate(notrans,seq))

def containsAllStr(seq,aset):
    return not aset.translate(notrans,seq) # 利用translate将aset中的与seq的项相同的项删掉

def translator(fm='',to='',delete='',keep=None):
    """
    简化tring.translate的使用
    translate 比set方式快,但是不使用unicode
    """
    if len(to) == 1:to = to*len(fm)
    trans = string.maketrans(fm,to)
    if keep != None:
        allchars = string.maketrans('','') #返回经过转换后的256个可打印字符组成的string
        delete = allchars.translate(allchars,keep.translate(allchars,delete)) #得到根据需要保留的keep计算后需要删除的项
    def translate(s):
        return s.translate(trans,delete)
    return translate


class Keeper(object):
    """
    For Unicode objects, the translate() method does not accept the optional
    deletechars argument. Instead, it returns a copy of the s where all characters
    have been mapped through the given translation table which must be a mapping of Unicode
    ordinals to Unicode ordinals, Unicode strings or None. Unmapped characters are left untouched.
    Characters mapped to None are deleted
    """
    def __init__(self,keep):
        self.keep = set(map(ord,keep))
    def __getitem__(self, item): #对该类的对象执行索引的时候调用
        if item not in self.keep:
            return None
        return unichr(item)
    def __call__(self, s):
        return unicode(s).translate(self)


© 著作权归作者所有

共有 人打赏支持
Listjj117
粉丝 0
博文 2
码字总数 582
作品 0
海淀
完美Python入门基础知识点总结,看完你的Python就完全入门了!

Python标识符 在 Python 里,标识符有字母、数字、下划线组成。 在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 Python 中的标识符是区分大小写的。 以下划线...

糖宝lsh
08/16
0
0
编程入门13:Python文本处理

上一篇:编程入门12:Python异常处理 计算机经常需要对文本进行各种操作,我们知道Python语言表示文本的类型是字符串(str),其中可以包含任何字符。系统内部以标准的“统一码”(Unicode)...

starglow_leo
06/19
0
0
一张图认识Python(附基本语法总结)

一张图带你了解Python,更快入门, 视频介绍>>>> 简单学Python安全简单学Python安全">http://edu.51cto.com/center/course/lesson/index?id=263601)简单学Python安全 Python基础语法总结: ......

安全牛课堂
05/22
0
0
python序列化数据本地存放

深入# 序列化的概念很简单。内存里面有一个数据结构,你希望将它保存下来,重 用,或者发送给其他人。你会怎么做?嗯, 这取决于你想要怎么保存,怎么重用,发送给谁。很多游戏允许你在退出的...

临峰不畏
2015/01/18
0
0
zg手册 之 python2.7.7源码分析(4)-- pyc字节码文件

什么是字节码 python解释器在执行python脚本文件时,对文件中的python源代码进行编译,编译的结果就是byte code(字节码) python虚拟机执行编译好的字节码,完成程序的运行 python会为导入的模...

东昕
2014/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
2
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部