python自带模块_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.选择排序

953121-20160617232530588-63172669.png

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')

953121-20160617232534651-1726563674.png

953121-20160617232537042-415053263.png

导入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()

953121-20160617232539885-295489455.png

953121-20160617232542292-1388797769.png

5.模块

hashlib模块

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

953121-20160617232545229-1952537741.png

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 匹配数字

\b 匹配单词的开始或结束

^ 匹配字符串的开始

$ 匹配字符串的结束

次数:

* 重复零次或更多次

+ 重复一次或更多次

? 重复零次或一次

{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

953121-20160617232547573-649024118.png

953121-20160617232551073-687264859.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值