文档章节

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

Listjj117
 Listjj117
发布于 2014/01/03 10:54
字数 450
阅读 45
收藏 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
海淀
私信 提问
编程入门13:Python文本处理

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

starglow_leo
2018/06/19
0
0
完美Python入门基础知识点总结,看完你的Python就完全入门了!

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

糖宝lsh
2018/08/16
0
0
一张图认识Python(附基本语法总结)

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

安全牛课堂
2018/05/22
0
0
Python标准库笔记(11) — Operator模块

Operator——标准功能性操作符接口. 代码中使用迭代器时,有时必须要为一个简单表达式创建函数。有些情况这些函数可以用一个函数实现,但是对于某些操作,根本没必要去写一个新的函数。因此模...

j_hao104
2018/12/18
0
0
zg手册 之 python2.7.7源码分析(4)-- pyc字节码文件

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

东昕
2014/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux 权限

权限 0 000 --- 无权限 1 001 --x 执行权限 2 010 -w- 写权限 3 011 -wx 写和执行 4 100 r-- 读权限 5 101 r-x 读和执行 6 110 rw- 读和写 7 111 rwx 读写执行 755 : rwxr-xr-x 660 : rw-r...

忙碌的小蜜蜂
24分钟前
0
0
21分钟教会你分析MaxCompute账单

21分钟教会你分析MaxCompute账单 背景 阿里云大计算服务MaxCompute是一款商业化的大数据分析平台,其计算资源有预付费和后付费两种计费方式。并且产品每天按照project为维度进行计量计费(账...

阿里云云栖社区
27分钟前
0
0
Docker使用 linuxserver/letsencrypt 生成SSL证书最全解析及实践

本文使用 HTTP 和 DNS 两种校验方式对 Docker 下 linuxserver/letsencrypt 项目进行了实践。生成SpringBoot可用证书,使用 Nginx 的 htpasswd 来对网站进行密码保护,并测试使用 fail2ban 防...

java菜分享
28分钟前
0
0
代码吃鸡:Python-Robocode

最近看到一个很有“未来感”的新闻: 一辆特斯拉在拉斯维加斯出了车祸,撞“死”了一个……emmmm……机器人。不知道是意外还是炒作,又或者是这位机器人故意碰瓷,反正人们也无法从受害者口中...

crossin
32分钟前
0
0
什么是公网IP、内网IP和NAT转换?

搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网IP(即局域网IP地址),但他们的区别是什么? 1、引言 搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网I...

Linux就该这么学
42分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部