91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在python項目中使用內置函數

發布時間:2021-02-23 17:24:49 來源:億速云 閱讀:253 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關如何在python項目中使用內置函數,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

內置函數:

如何在python項目中使用內置函數

1、abs()

返回一個數值的絕對值,可以是整數或浮點數等。

print(abs(-18))  
print(abs(0.15))
result:
18
0.15

2、all(iterable)

如果iterable的所有元素不為0、''、False或者iterable為空,all(iterable)返回True,否則返回False。

print(all(['a','b','c','d'])) #列表list,元素都不為空或0,返回True
True
print(all(['a','b','','d'])) #如果存在一個為空的元素,返回False
False
print(all([0,1,2,3]))  #如果存在為0的元素,同樣返回False
False
print(all([]))   #空元組和空列表返回值為True
True
print(all(()))
True

3、any(iterable)

如果iterable的任何元素不為0、''、False,all(iterable)返回True,如果iterable為空,返回Fasle。

注意:此函數與all()函數的在于,any()函數中有任意一個元素為0、''、False不影響整體,會返回True,而all()函數中必須是全部不包含特殊元素才會返回True,只要有一個特殊元素,會直接返回False.

print(any(['a','b','c','d'])) #列表list,元素都不為空或0
True
print(any(['a','b','','d'])) #列表list,存在一個為空的元素,返回True
True
print(any([0,False]))  #如果元素全部是0,Fasle,返回Fasle
False
print(any([]))   #any函數中空列表和空元組返回Fasle
False
print(any(()))
False

4、bin()

將一個整數轉換成一個二進制字符串,結果以'0b'為前綴。

print(bin(32))   #將十進制轉換成二進制
print(bin(64))
print(bin(128))
result:
0b100000
0b1000000
0b10000000

5、hex()

將一個整數轉換成一個小寫的十六進制字符串,結果以'0x'為前綴。

print(hex(255))   #將整數轉換成十六進制
print(hex(192))
result:
0xff
0xc0

6、oct()

將一個整數轉換成八進制的字符串,結果以'0o'為前綴。

print(oct(255))   #將整數轉換成八進制
print(oct(192))
result:
0o377
0o300

7、bool()

返回一個布爾值,True或False。

print(bool())   #bool值缺省為False
False
print(bool(0))
False
print(bool('jack'))
True
print(bool(""))
False

8、bytes()

將一個字符串轉換成你想要的編碼格式的字節。

print(bytes('你好',encoding='utf-8')) #將字符串轉換成utf-8編碼格式的字節
b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(bytes('你好',encoding='gbk')) #將字符串轉換gbk編碼格式的字節
b'\xc4\xe3\xba\xc3'

9、chr()

介紹chr()函數之前先看一下ASCII碼對照表:

如何在python項目中使用內置函數

chr()函數就是返回整數對應的ASCII碼對照表里的字符,取值范圍[0~255]之間的正數。

ord()函數作用正好和chr()函數相反,不再介紹,請看下面例子:

n = chr(65)  #根據十進制找到在ascii碼里對應的字符
print(n)
result:A
a= ord("a")  #根據字符找到在ascii碼里對應的十進制
print(a)
result:97

10、compile(source,filename,mode)

將source編譯為,代碼對象能夠通過exec語句來執行或者eval()進行求值。

source:字符串或者對象;

filename:代碼文件名稱,如果不是從文件讀取代碼則傳遞一些可辨認的值;

model:編譯代碼的種類,可以指定為'exec','eval','single'。

code="for i in range(0,10):print(i)" 
cmpcode = compile(code,'','exec')  #可以將字符串轉換成python代碼執行
print(cmpcode)
result:
<code object <module> at 0x000002A54E938ED0, file "", line 1>

11、exec()

exec語句用來執行儲存在字符串或文件中的Python語句。

exec("print('hello,world')")  #執行exec()里的python語句
result:
hello,world

12、eval()

eval()函數將字符串str當成有效的表達式來求值并返回計算結果。

ret = eval("8*8")    #執行表達式并返回結果
print(ret)
#result:64
t = exec("8*8")    #執行python代碼,可以接收或字符串,沒有返回值
print(t)
#result:None

13、divmod(a,b)

divmod(a,b)方法是計算a,b的商和余數,即:a//b 余幾,返回結果為元組。以后做網頁翻頁的時候會。

num = divmod(9,2)    #9//2
print(num)
#result:
(4,1)     #結果為商4余1

14、enumerate(iterable,start=0)

返回一個枚舉對象。iterable必須是序列,迭代器,或者其他支持迭代的對象。

dic = {'name':'jack',
 'age':18,
 'sex':'boy',}
for i in enumerate(dic.keys(),start=0):
 print(i)
#result:
(0, 'name')
(1, 'sex')
(2, 'age')

15、filter()

對于序列中的元素進行篩選,最終獲取符合條件的序列。

filter()  #循環第二個參數,讓每個循環元素執行函數,如果函數返回值為True,表示元素合法
filter內部實現方法:
for item in 第二個參數:
 r = 第一個參數(item)
 if r:
 result(item)
return result
#例:
def f1(args):
 if args>22:
 return True
li=[11,22,33,44]
ret = filter(f1,li) 
print(list(ret))  #返回值為一個迭代器,所以使用list()函數來返回像上面這種簡單的函數可以使用lambda函數來執行:

像上面這種簡單的函數可以使用lambda函數來執行:

li = [11,22,33,44]
ret = filter(lambda a:a>22,li) #通過lambda函數處理,lambda是有返回值的,條件成立返回True
print(list(ret))

對于列表中字符串跟數字并存的提取方法:

li = [2,32,4,45,22,'tony',33,25,5,76,'liupeng',19,78,'jack',24]
l1 = []
<br>ret = filter(lambda i:type(i) == str,li)      #使用filter函數結合lambda表達式來過濾type為str的元素
print(ret,type(ret))
for i in ret:
 l1.append(i)                    #把過濾掉的str元素導入到新列表中
print(l1)
#result:
<filter object at 0x7f4c5d1abcf8> <class 'filter'>
['tony', 'liupeng', 'jack'] 

li = [11,22,33,44,55,66,77,88,99,90]
def numb(args):
 if args % 2 ==0:      #取列表中偶數值,要想取基數值把0變成1
 return True
ret = filter(numb,li)
print(list(ret))
#result:
[22, 44, 66, 88, 90]
li1 = ['A','','B',None,'C',' ']
def numb1(args):
 if args and args.strip():      # 去空
 return True
ret = filter(numb1,li1)
print(list(ret))
#result:
['A', 'B', 'C']

filter主要的功能其實就是進行過濾及篩選。在此進行一段插曲。python中的正則表達式也可以進行過濾跟篩選,主要是面向于字符串的過濾中起到了很好的作用。對于正則表達式打算另起章節具體介紹,在此僅簡單列舉1-2個案例僅供參考。

小插曲(正則表達式篩選案例):

需求1:取出s變量中的speed跟angle。

import re                       #在這里我們需要提前導入re模塊。目的為了是使用re模塊中findall方法
s = 'speed=210,angle=150'
m = re.findall(r'(\w*[a-zA-Z]+)\w*',s)      #\w代表匹配字母跟數字,*代表對于前一個字符重復0到無窮次,[a-zA-Z]代表匹配26個包含大小寫的字母,而后面的+號表示把匹配到的字母拼接起來
# m = re.findall(r'([a-zA-Z]+)',s)       #上述代碼的簡化版。不需要指定過度的匹配字符,因為[a-zA-Z]的范圍已經是指定了所有字母組合了。
print (m)
#result:
['speed', 'angle']

需求2:從s這個字符串中,把數字跟字符分別提取出來。

import re
s = 'lajsfdhoiqu190821AWJKJE34ijoohoyyuoi1234uh22412io980843'
s1 = re.findall(r'[0-9]+',s)              #使用方法跟需求1中的運用方法基本一致。只不過范圍我們從字符轉到了字母身上。而在指定字母的時候給出【0-9】的范圍即可。
print(s1)
s2 = re.findall(r'([a-zA-Z]+)',s)
print(s2)
#result:
['190821', '34', '1234', '12412', '980843']
['lajsfdhoiqu', 'AWJKJE', 'ijoohoyyuoi', 'uh', 'io']

需求3:從s這個字符串中,把數字跟字符分別提取出來。

import re
relink = '<a href="(.*)">(.*)</a>'
info = '<a href="http://www.baidu.com">baidu</a>'
cinfo = re.findall(relink,info)
print (cinfo)
#result:
[('http://www.baidu.com', 'baidu')]

16、map(函數,可迭代的對象)

我們先看map。map()函數接收兩個參數,一個是函數,一個是序列,map將傳入的函數依次作用到序列的每個元素,并把結果作為新的list返回。

舉例說明,比如我們有一個函數f(x)=x2,要把這個函數作用在一個list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()實現如下:

如何在python項目中使用內置函數

現在,我們用Python代碼實現:

>>> def f(x):
...  return x * x
...
>>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]

map()傳入的第一個參數是f,即函數對象本身。

你可能會想,不需要map()函數,寫一個循環,也可以計算出結果:

def f(x):
 return x*x
L = []
for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
 L.append(f(n))
print(L)
#result:
[1, 4, 9, 16, 25, 36, 49, 64, 81]

的確可以,但是,從上面的循環代碼,能一眼看明白“把f(x)作用在list的每一個元素并把結果生成一個新的list”嗎?

所以,map()作為高階函數,事實上它把運算規則抽象了,因此,我們不但可以計算簡單的f(x)=x2,還可以計算任意復雜的函數,比如,把這個list所有數字轉為字符串:

>>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])
['1', '2', '3', '4', '5', '6', '7', '8', '9']

只需要一行代碼(僅限于python2的版本。python3返回的是個迭代器需要for循環出元素)。

li = [11,22,33,44]
ret = map(str,li)
l1 = []
for x in ret:
 l1.append(x)
print(l1)
#result:
['11', '22', '33', '44']

map結合lambda表達式案例:

li = [11,22,33,44]
new_list = map(lambda a:a+100,li)
print(list(new_list))
#result:
[111,122,133,144]
li = [11, 22, 33]
sl = [1, 2, 3]
new_list = map(lambda a, b: a + b, li, sl)
print(list(new_list))
#result:
[12, 24, 36]

map結合生成器案例:

def func(x,y):
 return x*y*2  #返回結果為x*y的和再成2
li = [1,2,3,4]
li1= [2,3,4,5]
ret = map(func,li,li) # 第一個參數為func函數本身,第二個參數為x(li列表中的每個值),第三個參數為y(li1列表中的每個值)
print(ret.__next__())
for i in ret:
 print(i)
#result:(結果為li列表跟li1列表每個值相乘再成2)
4
12
24
40

17、reduce()

對于序列內所有元素進行累計操作:

li = [11,22,33]
result = reduce(lambda x,y:x + y,li)
print (result)
#result:       #注意在Python3中已經沒有了reduce函數
66<br><br>當然也可以通過結合lambda表達式3行解決<br><br> 
1 
from functools import reduce#python3中已經把reduce踢出了內置函數。需要通過import functools函數來引用reduceli = [11,22,33]result = reduce(lambda x,y:x+y,li)print(result)#result:66

18、isinstance()

判斷對象是不是類的實例。

li = [11,22,33]
n = isinstance(li,list)   #判斷li是不是list類的實例
print(n)    
#result:
True

19、len()

判斷字符串長度。

s = "你好"
print(len(s))     #在python3中len函數既可以取的字符的長度,也可以取字節的長度
         #python2.*中len函數只可以取字節的長度
#result:2
s = "你好"
b = bytes(s,encoding='utf-8')
print(len(b))
#result:6
分別使用2.*和3.*循環“你好”,查看結果:
2.7 for 循環“你好”      #輸出6個空字符
3.5 for 循環“你好”查看結果     #輸出"字符串結果"

20、max()、min()、sum()

max():取最大值; min():取最小值; sum():取總的值

li=[11,22,33]
print(max(li))      #最大值
33
print(min(li))      #最小值
11
print(sum(li))      #總和
66

21、pow(x,y)

pow()返回x的y次方的值。

print(pow(2,3))      #計算2的3次方
8
print(pow(2,4))      #計算2的4次方
16

22、round()

round()方法返回浮點數x的四舍五入值。

print(round(2.3))     #四舍五入
2
print(round(2.8))
3

23、random()

random方法返回隨機生成的一個實數,它在[0,1]范圍內。random的使用一般對于自動生成密碼,驗證碼之類的用的比較多。

import random
print('random:',random.random())
#result: random: 0.7037348886029884
# coding=utf-8
__author__ = 'hillfree'
import random
def testRand():
 # 在[a, b]之間產生隨機整數 random.randint(a, b)
 for i in range(5):
  ret = random.randint(100, 999)
  print("random.randint(100, 999) = {0}".format(ret,))
 # 在[a, b]之間產生隨機浮點數 random.uniform(a, b)
 for i in range(5):
  ret = random.uniform(1.0, 100.0)
  print("random.uniform(1.0, 100.0) = {0}".format(ret,))
 # 在[0.0, 1.0)之間產生隨機浮點數 random.random()
 for i in range(5):
  ret = random.random()
  print("random.random() = {0}".format(ret,))
 # 在樣本population中隨機選擇k個 random.sample(population, k)
 population = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" }
 for i in range(5):
  ret = random.sample(population, 3)
  print("random.sample(population, 3) = {0}".format(ret,))
 # 在序列seq中隨機選擇1個 random.choice(seq)
 seq = ("to", "be", "or", "not", 'tobe', 'is', 'a', 'question')
 for i in range(5):
  ret = random.choice(seq)
  print("random.choice(seq) = {0}".format(ret,))
 # 從序列中隨機獲取指定長度的片斷。不修改原有序列。
 # random.sample(sequence, k)
 sentence = "to be or not to be is a question"
 for i in range(5):
  ret = random.sample(sentence, 5)
  print("random.sample(sentence, 5) = {0}".format(ret,))
 # 三角分布的隨機數 random.triangular(low, high, mode)
 for i in range(5):
  ret = random.triangular(0, 100, 10)
  print(" random.triangular(0, 100, 10) = {0}".format(ret,))
 # 高斯分布的隨機數(稍快) random.gauss(mu, sigma)
 for i in range(5):
  ret = random.gauss(0, 1)
  print(" random.gauss(0, 1) = {0}".format(ret,))
 # beta β分布的隨機數 random.betavariate(alpha, beta)
 # 指數分布的隨機數 random.expovariate(lambd)
 # 伽馬分布的隨機數 random.gammavariate(alpha, beta)
 # 對數正態分布的隨機數 random.lognormvariate(mu, sigma)
 # 正態分布的隨機數 random.normalvariate(mu, sigma)
 # 馮米塞斯分布的隨機數 random.vonmisesvariate(mu, kappa)
 # 帕累托分布的隨機數 random.paretovariate(alpha)
 # 韋伯分布的隨機數 random.weibullvariate(alpha, beta)
if __name__ == "__main__" :
 testRand()

random模塊利用random生成一個簡單的驗證碼案例

# import random 導入 隨機模塊,
 #驗證碼的操作
random.randint(1,99) #隨機數字
temp = '' 定義一個空字付串
for i in range(6): 循環6次
 q = random.randrange(0,4) 自動生成一個0-4的隨機數
 if q == 3 or q == 1: 如果隨機數等于3 或 1就生成小寫字母
  c2 = random.randrange(0,10) 生成 0--10內的隨機數
  temp = temp + str(c2) 向變量中添加當前數字對應的ascii碼的字符
 else:
  c = random.randrange(65,91) 生成 65-91內的隨機數
  z = chr(c)
  temp = temp + z 向變量中添加當前數字對應的ascii碼的字符
print(temp)

隨機生成密碼:

這里用到了除random以外的另外一個模塊(string),通過string模塊可以更方便的為我們調取字母跟數字。不需要按照上例來自己創建范圍來生成數字字母了。

import random
import string
sal = '!@#$%^&*()><?'
def passwd(length):
 chars = string.ascii_letters + string.digits + sal
 #return ''.join(random.choice(chars) for i in range(length))
 return ''.join(random.sample(chars,8))
if __name__ == '__main__':
 for i in range(1):
  print(passwd(8))

24、choice()

choice()方法返回一個列表,元組或字符串的隨機項。

import random
#取列表或元組的隨機值
print("choice([1, 2, 3, 5, 9]) : ", random.choice([1, 2, 3, 5, 9]))
print("choice('A String') : ", random.choice('A String'))
#result:
choice([1, 2, 3, 5, 9]) : 9     #執行一次值會變一次
choice('A String') : i

25、randrange()

返回指定遞增基數集合中的一個隨機數,基數缺省值為1,聽這個意思不是太好理解,下面舉例說明:

import random
#隨機輸出100到1000間的偶數
print("rangrange(100,1000,2):",random.randrange(100,1000,2))
#隨機輸出100到1000間的其他數
print("rangrange(100,1000,2):",random.randrange(100,1000,3))
#result:
rangrange(100,1000,2): 260
rangrange(100,1000,2): 511

下面將上面三個函數放在一起,來做一道題,生成6位的隨機數,其中包括大寫字母,數字?

import random
li= []
for i in range(6):      #循環6次
 temp = random.randrange(65,91)  #random隨機數從ascii碼里取65到91
 c = chr(temp)      #將隨機數找到ascii碼表里找到具體字符
 li.append(c)      #追加到空列表里
result = "".join(li)     #再用join的方式將列表轉換成字符串
print(result)       #結果全是大寫字母 

li = []          #定義空列表
for i in range(6):       #循環6次
 r= random.randrange(0,5)     #生成一個0-4的隨機值,然后根據r的值判斷數字出現的位置
 if r ==2 or r==4:       #如果第一次循環r==2或者4的時候,條件滿足,在列表里隨機添加一個數字
  num = random.randrange(0,10)   #生成一個0-9的隨機數
  li.append(str(num))
 else:
  temp = random.randrange(65,91)  #如果上面條件不成立,添加字符串
  c = chr(temp)
  li.append(c)
result = "".join(li)
print(result)

26、zip()

利用每個可迭代元素,制作一個迭代器來聚合元素。

l1 = ['北京',11,22,33]
l2 = ['歡迎',11,22,33]
l3 = ['你',11,22,33]
r=zip(l1,l2,l3)
#print(list(r)) 
# [('北京', '歡迎', '你'), (11, 11, 11), (22, 22, 22), (33, 33, 33)]
temp = list(r)[0]
ret ="".join(temp)
print(ret)

看完上述內容,你們對如何在python項目中使用內置函數有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安陆市| 宣汉县| 板桥市| 砀山县| 安阳市| 吕梁市| 达孜县| 万盛区| 新绛县| 德州市| 碌曲县| 大悟县| 芦山县| 环江| 广灵县| 汨罗市| 瑞丽市| 历史| 迭部县| 平塘县| 玉门市| 八宿县| 久治县| 县级市| 家居| 马公市| 商洛市| 西乡县| 原阳县| 白城市| 昌黎县| 南溪县| 余江县| 巴楚县| 德安县| 新乡县| 比如县| 开化县| 威远县| 怀安县| 新余市|