• python-day6 常见算法 python内置模块


    1.冒泡排序

    需求:请按照从小到大对列表 [13, 22, 6, 99, 11] 进行排序

    原理:相邻两个值进行比较,将较大的值放在右侧,依次比较!

    li=[39,11,43,88,765,9]
    for i in range(len(li)):
    for n in range(i,len(li)):
    if li[n]>li[n+1]:
    li[n],li[n+1]=li[n+1],li[n]
    print(li)

    2.选择排序

    v2li0v}4(`@9

    3.递归

    递归:循环调用函数本身,根据条件退出

    def ab(a):
    if a==1:
    return 1
    return a*ab(a-1)
    print(ab(7))

    4.反射

    python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员

    class Foo(object):

    def __init__(self):

    self.name = 'wupeiqi'

    def func(self):

    return 'func'

    obj = Foo()

    # #### 检查是否含有成员 ####

    hasattr(obj, 'name')

    hasattr(obj, 'func')

    # #### 获取成员 ####

    getattr(obj, 'name')

    getattr(obj, 'func')

    # #### 设置成员 ####

    setattr(obj, 'age', 18)

    setattr(obj, 'show', lambda num: num + 1)

    # #### 删除成员 ####

    delattr(obj, 'name')

    delattr(obj, 'func')

    clipboard

    clipboard[1]

    导入lib目录下的m模块里面的方法

    def run():
    inp=input('请输入URL:')
    m,f=inp.split('/')
    obj=__import__(m)
    if hasattr(obj,f):
    func=getattr(obj,f)
    func()
    else:
    print('404')
    run()

    clipboard[2]

    clipboard[3]

    5.模块

    hashlib模块

    用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

    clipboard[4]

    import hashlib
    obj=hashlib.md5(bytes('adfdf',encoding='utf-8'))
    obj.update(bytes('123',encoding='utf-8'))
    result=obj.hexdigest()
    print(result)

    6.正则表达式

    re模块用于对python的正则表达式的操作。

    字符:

      . 匹配除换行符以外的任意字符
      w 匹配字母或数字或下划线或汉字
      s 匹配任意的空白符
      d 匹配数字
       匹配单词的开始或结束
      ^ 匹配字符串的开始
      $ 匹配字符串的结束

    次数:

      * 重复零次或更多次
      + 重复一次或更多次
      ? 重复零次或一次
      {n} 重复n次
      {n,} 重复n次或更多次
      {n,m} 重复n到m次

    IP: ^(25[0-5]|2[0-4]d|[0-1]?d?d)(.(25[0-5]|2[0-4]d|[0-1]?d?d)){3}$ 手机号: ^1[3|4|5|8][0-9]d{8}$

    1、match(pattern, string, flags=0)

    从起始位置开始根据模型去字符串中匹配指定内容,匹配单个

    • 正则表达式
    • 要匹配的字符串
    • 标志位,用于控制正则表达式的匹配方式

    import re obj = re.match('d+', '123uuasf') if obj: print obj.group()

    2、search(pattern, string, flags=0)

    根据模型去字符串中匹配指定内容,匹配单个

    import re obj = re.search('d+', 'u123uu888asf') if obj: print obj.group()

    3、group和groups

    a = "123abc456"

    print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group()

    print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(0)

    print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(1)

    print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(2)

    print re.search("([0-9]*)([a-z]*)([0-9]*)", a).groups()

    4、findall(pattern, string, flags=0)

    上述两中方式均用于匹配单值,即:只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用 findall。

    import re obj = re.findall('d+', 'fa123uu888asf') print obj

    5、sub(pattern, repl, string, count=0, flags=0)

    用于替换匹配的字符串

    content = "123abc456" new_content = re.sub('d+', 'sb', content) # new_content = re.sub('d+', 'sb', content, 1)print new_content

    6、split(pattern, string, maxsplit=0, flags=0)

    根据指定匹配进行分组

    content = "'1 - 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )'" new_content = re.split('*', content) # new_content = re.split('*', content, 1)print new_content

    b08o{}_$`x$0

    clipboard[5]

  • 相关阅读:
    MySQL如何利用索引优化ORDER BY排序语句 【转载】
    c++拼接字符串效率比较(+=、append、stringstream、sprintf)
    Mysql 的字符编码机制、中文乱码问题及解决方案【转载】
    Java连接MySQL中文乱码处理【转载】
    Java 接口
    Java 抽象类和Final关键字
    Java 对象转型
    Java 动态绑定和多态
    Java 继承和访问控制
    Java Class Object
  • 原文地址:https://www.cnblogs.com/zhanmeiliang/p/5595409.html
Copyright © 2020-2023  润新知