zoukankan      html  css  js  c++  java
  • Python美味食谱:1.8 检测字符串中是否包含某字符集合中的字符

    目的

      检测字符串中是否包含某字符集合中的字符

    方法

      最简洁的方法如下,清晰,通用,快速,适用于任何序列和容器

    def containAny(seq,aset):
        
    for c in seq:
             
    if c in aset:
                    
    return True
        
    return False

          第二种适用itertools模块来可以提高一点性能,本质上与前者是同种方法(不过此方法违背了Python的核心观点:简洁,清晰)

    itertools.ifilter(predicate, iterable)的说明

    Make an iterator that filters elements from iterable returning only those for which the predicate is True. If predicate is None, return the items that are true.

    例如:

    ifilter(lambda x: x%2, range(10)) --> 1 3 5 7 9

     import itertools

    def  containAny(seq,aset):

         
    for item in itertools.ifilter(aset.__contain__,seq):

               
    return True

         
    return False

    如果要检测两个字符串是否为包含关系,此时必须检查所有子项,最好适用set类型,其中set(aset).difference(seq)是指存在于aset中而seq没有的元素:

    def  containAll(seq,aset):
          
    return not set(aset).difference(seq)

    例如下面这个例子:

    In [4]: L1=[1,2,3,4]

    In [
    5]: L2=[1,4,3,1]

    In [
    6]: containAll(L1,L2)
    Out[
    6]: True

    In [
    7]: containAll(L2,L1)
    Out[
    7]: False

    注意一下,set.symmetric_difference是指两个集合独有的元素

    In [9]: L2=[3,2,4,5]
    In [10]: x=set(L1)
    In [
    11]: x.symmetric_difference(L2)
    Out[
    11]: set([15])
  • 相关阅读:
    根据访问ip的地区跳转到指定地址
    js生成vCard,以及格式参数详细说明
    min_to_split_multiprocessing多进程,用于平时快速补充数据
    min_to_split.py按日存储到按个股存储
    readzip_minute_data 多进程处理数据
    打包成7zfile,to7zfile
    baostock_multiprocessing 多进程取数据
    终止阻塞线程(有共享锁的线程无效)
    readzip_add_maxL3多线程
    readzip_add_maxL2
  • 原文地址:https://www.cnblogs.com/yuxc/p/2132553.html
Copyright © 2011-2022 走看看