首頁 > 軟體

六個Python3中使用最廣泛的內建函數總結

2022-08-29 14:01:43

1、引言

小屌絲:魚哥, 都說要想程式碼寫的溜,Lamdba不能少。

小魚:你在專案程式碼多寫幾個lamdba試試,看看架構師找不找你喝茶水。

小屌絲:…

小魚:逗你玩… 架構師哪捨得自己花錢買茶葉,都是能蹭就蹭…

小屌絲:…

小魚:你這突然提到lamdba函數,是想了解點什麼??

小屌絲:嘿嘿,真是什麼都瞞不過你, 我就想把python最常用的內建函數在重新捋一捋,

小魚:說實話。

小屌絲:你也知道,我女神最近在學習python,所以我想…

小魚:靠… 就知道你是這樣的!

小屌絲:魚哥,我也是身不由己啊, 不然… 說出來都是眼淚。

小魚:行了,別裝的這麼可憐, 我給你捋一捋不就行了。

小屌絲:啥也別說了,此時我想…

2、內建函數詳解

2.1 Lamdba 函數

lambda 函數用於建立匿名函數,又被稱為lambda表示式。

實際上它只是一個表示式的存在,如果在程式碼編寫過程中需要實現簡單的函數邏輯但是單獨寫一個函數又比較麻煩就可以使用lambda表示式只需要一行程式碼就可以完成了。

比如需要實現一個簡單的加法計算,使用基本的函數來實現需要建立一個add_1函數。

範例:

實現一個簡單的加法計算。

一、基本函數

程式碼範例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ

#基本函數來實現加法計算
def add_ms(x,y):
    return x + y
print(f'輸出結果:{add_ms(8,9)}')

執行結果

輸出結果:17

二、lamdba表示式

使用lamdba表示式來實現

程式碼範例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ

#lamdba表示式來實現

add_lamd = lambda x,y:x+y
print(f'lamdba表示式輸出結果:{add_lamd(5,10)}')

執行結果

lamdba表示式輸出結果:15

解析:

lambda x,y: x + y 表示 x,y是作為引數,x + y是作為函數的運算邏輯被執行。

2.2 Map 函數

map函數可以使用另外一個函數轉換整個可迭代物件的函數,包括將字串轉換為數位、數位的四捨五入等等。

之所以使用map函數來完成這些事情可以節約記憶體,使程式碼的執行速度提高,並且使用的程式碼量比較少。

2.2.1 數位轉換

範例:

將一個字串的陣列轉換成數位的陣列的形式,這裡用兩種方式:

  • 傳統的for迴圈方式
  • map函數

接下來,我們用程式碼轉換。

一、傳統for迴圈方式

程式碼範例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ

#for 迴圈來讀取res列表的值
strings = ['10','20','30','40','50']
res = []

for str in strings:
    res.append(int(str))

print(f'輸出結果:{res}')

執行結果

輸出結果:[10, 20, 30, 40, 50]

二、map函數

我們使用map函數方式來轉換。

程式碼範例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ

#呼叫map函數
strings = ['11','22','33','44','55']
res_map = map(int,strings)

print(f'map函數輸出結果:{list(res_map)}')

執行結果

map函數輸出結果:[11, 22, 33, 44, 55]

可以看到,map函數,一行程式碼就可以轉換完成,非常方便。

2.2.2 字母大小寫轉換

解析:

map(int,strings),其中int是作為函數作為引數傳入的,而strings就是可以迭代的物件。

範例

把小寫英文字母轉換成大寫英文字母

程式碼範例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ

'''
程式碼實現功能:
	建立函數,來轉換可轉化的序列資料
	初始化make_super函數,將小寫英文轉換成大寫英文

'''

#定義make_super函數,
def make_super(text):
    res_text = text.upper()
    return res_text

#定義英文單詞列表
words = ['python', 'java', 'ruby','go']
#轉化
words_res = list(map(make_super, words))
print(f'轉換結果:{words_res}')

執行結果

轉換結果:['PYTHON', 'JAVA', 'RUBY', 'GO']

使用map(make_super, words),其中make_super是作為函數傳入的,而words作為可序列化資料。

2.3 Filter 函數

定義

filter函數:使用該函數可以有效的過濾掉不需要的列表中的資料元素。

方法

'''
filter(function, iterable)
'''

在邏輯處理中,同樣是需要一個處理常式和一個可序列化的資料。

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ

#定義列表
list_num = [11,22,33,44,55,66,77]
#過濾掉偶數,保留奇數
new_list = filter(lambda n:n % 2 == 1,list_num)

print(f'過濾後的結果:{list(new_list)}')

執行結果

過濾後的結果:[11, 33, 55, 77]

通過執行結果,可以看到過濾掉了所有的偶數元素,留下了奇數元素。

2.4 Reduce 函數

定義

reduce函數通常用於計算整個列表的邏輯運算,即將一個函數的運算可以新增到這個列表的每個元素上面。

方法

'''
reduce(function, iterable[, initializer])
'''

程式碼範例

計算一個列表中每個元素之間的相乘的結果:

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ

from functools import reduce
#列表
list_re = [10,20,30,40,50,]
#計算每個元素的乘積
print(f'計算結果:{reduce(lambda x, y: x * y, list_re)}')

執行結果

計算結果:12000000

2.5 Enumerate 函數

定義

enumerate 函數:一般用於可序列化資料的處理上面,而python中的可序列化資料又比較多,所以,還是蠻重要的。

程式碼範例

可以使用該函數直接遍歷出一個可序列化資料的下標索引以及對應的資料。

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ

#定義列表內容
words = ['python', 'java', 'ruby','go']
#遍歷執行,返回新的列表
for index, data in enumerate(words):
    print(f'當前索引:{index},當前資料:{data}')

執行結果

當前索引:0,當前資料:python
當前索引:1,當前資料:java
當前索引:2,當前資料:ruby
當前索引:3,當前資料:go

2.6 Zip 函數

定義

zip函數:可以同時遍歷多個列表並將相同位置的元素組合成一個元祖。

程式碼範例

#定義空列表
list_res = []

#遍歷列表使其相同位置元素能組合成
for m in zip([1, 2, 3, 4, 5], ['python', 'java', 'ruby', 'go', 'C#']):
    list_res.append(m)

print(f'輸出結果:{list_res}')

執行結果

輸出結果:[(1, 'python'), (2, 'java'), (3, 'ruby'), (4, 'go'), (5, 'C#')]

3、總結

看到這裡,今天的分享差不多就完事了。

今天共分享了六種常用的內建函數:

  • Lamdba 函數
  • Map 函數
  • Filter 函數
  • Reduce 函數
  • Enumerate 函數
  • Zip 函數

在實際的工作中,這些都是非常實實在在常用的函數,

所以,這些也都是必須要掌握的知識。

到此這篇關於六個Python3中使用最廣泛的內建函數總結的文章就介紹到這了,更多相關Python3內建函數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com