zoukankan      html  css  js  c++  java
  • python- 常见算法 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]

  • 相关阅读:
    jQuery 语法
    jQuery 简介
    把数据存储到 XML 文件
    XML 注意事项
    XML DOM (Document Object Model) 定义了访问和操作 XML 文档的标准方法。
    通过 PHP 生成 XML
    XML 命名空间(XML Namespaces)
    XML to HTML
    XMLHttpRequest 对象
    使用 XSLT 显示 XML
  • 原文地址:https://www.cnblogs.com/meng-wei-zhi/p/8120284.html
Copyright © 2011-2022 走看看