日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python- 常见算法 python内置模块

發(fā)布時(shí)間:2024/6/30 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python- 常见算法 python内置模块 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.冒泡排序

需求:請按照從小到大對列表 [13, 22, 6, 99, 11] 進(jìn)行排序

原理:相鄰兩個(gè)值進(jìn)行比較,將較大的值放在右側(cè),依次比較!

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.遞歸

遞歸:循環(huán)調(diào)用函數(shù)本身,根據(jù)條件退出

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

4.反射

python中的反射功能是由以下四個(gè)內(nèi)置函數(shù)提供:hasattr、getattr、setattr、delattr,改四個(gè)函數(shù)分別用于對對象內(nèi)部執(zhí)行:檢查是否含有某成員、獲取成員、設(shè)置成員、刪除成員

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

# #### 設(shè)置成員 ####

setattr(obj,?'age',?18)

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

# #### 刪除成員 ####

delattr(obj,?'name')

delattr(obj,?'func')

?

導(dǎo)入lib目錄下的m模塊里面的方法

def run():
inp=input('請輸入U(xiǎn)RL:')
m,f=inp.split('/')
obj=__import__(m)
if hasattr(obj,f):
func=getattr(obj,f)
func()
else:
print('404')
run()

5.模塊

hashlib模塊

用于加密相關(guān)的操作,代替了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.正則表達(dá)式

re模塊用于對python的正則表達(dá)式的操作。

字符:

  . 匹配除換行符以外的任意字符
  \w 匹配字母或數(shù)字或下劃線或漢字
  \s 匹配任意的空白符
  \d 匹配數(shù)字
  \b 匹配單詞的開始或結(jié)束
  ^ 匹配字符串的開始
  $ 匹配字符串的結(jié)束

次數(shù):

  * 重復(fù)零次或更多次
  + 重復(fù)一次或更多次
  ? 重復(fù)零次或一次
  {n} 重復(fù)n次
  {n,} 重復(fù)n次或更多次
  {n,m} 重復(fù)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}$ 手機(jī)號: ^1[3|4|5|8][0-9]\d{8}$

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

從起始位置開始根據(jù)模型去字符串中匹配指定內(nèi)容,匹配單個(gè)

  • 正則表達(dá)式
  • 要匹配的字符串
  • 標(biāo)志位,用于控制正則表達(dá)式的匹配方式

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

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

根據(jù)模型去字符串中匹配指定內(nèi)容,匹配單個(gè)

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)

上述兩中方式均用于匹配單值,即:只能匹配字符串中的一個(gè),如果想要匹配到字符串中所有符合條件的元素,則需要使用 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)

根據(jù)指定匹配進(jìn)行分組

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

轉(zhuǎn)載于:https://www.cnblogs.com/meng-wei-zhi/p/8120284.html

總結(jié)

以上是生活随笔為你收集整理的python- 常见算法 python内置模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。