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.選擇排序
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')
?
導入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()
5.模塊
hashlib模塊
用于加密相關的操作,代替了md5模塊和sha模塊,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
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
轉載于:https://www.cnblogs.com/meng-wei-zhi/p/8120284.html
總結
以上是生活随笔為你收集整理的python- 常见算法 python内置模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 13 KNN背景分割器
- 下一篇: Linux 的进程状态