日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

我希望我一开始就知道的5个Python功能

發(fā)布時(shí)間:2025/3/15 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我希望我一开始就知道的5个Python功能 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Python可以說(shuō)是十年來(lái)新興的編程語(yǔ)言,并且被證明是一種非常強(qiáng)大的語(yǔ)言。 從交互式地圖到區(qū)塊鏈,我已經(jīng)使用Python構(gòu)建了許多應(yīng)用程序。 Python有許多功能,對(duì)于初學(xué)者來(lái)說(shuō),一開(kāi)始很難掌握所有功能。

即使您是從其他語(yǔ)言(例如C或MATLAB)切換來(lái)的程序員,使用Python進(jìn)行更高級(jí)別抽象的編碼絕對(duì)是另一種體驗(yàn)。 我希望我早先了解一些Python功能,并重點(diǎn)介紹了五個(gè)最重要的功能。

1.列推導(dǎo)表達(dá)式-緊湊代碼

很多人會(huì)把lambda,map和filter稱(chēng)為Python的"技巧",這是每個(gè)初學(xué)者都應(yīng)該學(xué)習(xí)的。 盡管我認(rèn)為它們是我們應(yīng)該意識(shí)到的功能,但由于它們?nèi)狈`活性,因此在大多數(shù)情況下它們并不是特別有用。

Lambda是一種將功能組合在一行中以供一次性使用的方法。 如果多次調(diào)用函數(shù),則會(huì)降低性能。 另一方面,map將函數(shù)應(yīng)用于列表中的所有元素,而filter獲取集合中滿(mǎn)足用戶(hù)定義條件的元素子集。

add_func = lambda z: z ** 2 is_odd = lambda z: z%2 == 1 multiply = lambda x,y: x*yaList = list(range(10)) print(aList) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Photo by Anastase Maragos on Unsplash

?

列推導(dǎo)表達(dá)式是一種簡(jiǎn)潔而靈活的方法,可以從其他具有靈活表達(dá)式和條件的列表中創(chuàng)建列表。 它由方括號(hào)構(gòu)造,帶有表達(dá)式或函數(shù),僅當(dāng)元素滿(mǎn)足特定條件時(shí),該表達(dá)式或函數(shù)才應(yīng)用于列表中的每個(gè)元素。 它也可以嵌套以處理嵌套列表,并且比使用地圖和過(guò)濾器靈活得多。

# Syntax of list comprehension [ expression(x) for x in aList if optional_condition(x) ] print(list(map(add_func, aList))) print([x ** 2 for x in aList]) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]print(list(filter(is_odd, aList))) print([x for x in aList if x%2 == 1]) # [1, 3, 5, 7, 9] # [1, 3, 5, 7, 9]

2.列表操作-循環(huán)列表

Python允許負(fù)索引,其中aList [-1] == aList [len(aList)-1]。 因此,我們可以通過(guò)調(diào)用aList [-2]來(lái)獲得列表中的倒數(shù)第二個(gè)元素。

我們還可以使用aList [start:end:step]語(yǔ)法對(duì)列表進(jìn)行切片,其中包括開(kāi)始元素,但沒(méi)有結(jié)束元素。 因此,調(diào)用aList [2:5]會(huì)得到[2,3,4]。 我們也可以簡(jiǎn)單地通過(guò)調(diào)用aList [::-1]來(lái)反轉(zhuǎn)列表,我發(fā)現(xiàn)這種技術(shù)非常優(yōu)雅。

Photo by Martin Shreder on Unsplash

列表也可以解包為單獨(dú)的元素,或者使用星號(hào)將元素和子列表混合在一起。

a, b, c, d = aList[0:4] print(f'a = {a}, b = , c = {c}, d = ozvdkddzhkzd') # a = 0, b = 1, c = 2, d = 3a, *b, c, d = aList print(f'a = {a}, b = , c = {c}, d = ozvdkddzhkzd') # a = 0, b = [1, 2, 3, 4, 5, 6, 7], c = 8, d = 9

3.zipping和枚舉-for循環(huán)

Zip函數(shù)創(chuàng)建一個(gè)迭代器,該迭代器聚合來(lái)自多個(gè)列表的元素。 它允許在for循環(huán)中并行遍歷列表并并行排序。 可以使用星號(hào)將其解壓縮。

numList = [0, 1, 2] engList = ['zero', 'one', 'two'] espList = ['cero', 'uno', 'dos'] print(list(zip(numList, engList, espList))) # [(0, 'zero', 'cero'), (1, 'one', 'uno'), (2, 'two', 'dos')]for num, eng, esp in zip(numList, engList, espList):print(f'{num} is {eng} in English and {esp} in Spanish.') # 0 is zero in English and cero in Spanish. # 1 is one in English and uno in Spanish. # 2 is two in English and dos in Spanish. Eng = list(zip(engList, espList, numList)) Eng.sort() # sort by engList a, b, c = zip(*Eng)print(a) print(b) print(c) # ('one', 'two', 'zero') # ('uno', 'dos', 'cero') # (1, 2, 0)

Photo by Erol Ahmed on Unsplash

枚舉起初可能看起來(lái)有些嚇人,但在許多情況下變得非常方便。 這是一個(gè)自動(dòng)計(jì)數(shù)器,通常在for循環(huán)中使用,因此不再需要通過(guò)counter = 0和counter + = 1在for循環(huán)中創(chuàng)建和初始化計(jì)數(shù)器變量。枚舉和zip是兩個(gè) 構(gòu)建for循環(huán)時(shí)最強(qiáng)大的工具。

upperCase = ['A', 'B', 'C', 'D', 'E', 'F'] lowerCase = ['a', 'b', 'c', 'd', 'e', 'f'] for i, (upper, lower) in enumerate(zip(upperCase, lowerCase), 1):print(f'{i}: {upper} and {lower}.') # 1: A and a. # 2: B and b. # 3: C and c. # 4: D and d. # 5: E and e. # 6: F and f.

4.生成器-內(nèi)存效率

當(dāng)我們打算計(jì)算大量結(jié)果但希望避免同時(shí)分配所有結(jié)果所需的內(nèi)存時(shí),將使用生成器。 換句話(huà)說(shuō),它們會(huì)即時(shí)生成值,并且不會(huì)將先前的值存儲(chǔ)在內(nèi)存中,因此我們只能對(duì)其進(jìn)行一次迭代。如果大家對(duì)Python感興趣的話(huà),可以加一下我們的學(xué)習(xí)交流摳摳群哦:649,825,285,免費(fèi)領(lǐng)取一套學(xué)習(xí)資料和視頻課程喲~

當(dāng)讀取大文件或使用關(guān)鍵字yield生成無(wú)限序列時(shí),通常使用它們。 我經(jīng)常在大多數(shù)數(shù)據(jù)科學(xué)項(xiàng)目中發(fā)現(xiàn)它很有用。

def gen(n): # an infinite sequence generator that generates integers >= nwhile True:yield nn += 1G = gen(3) # starts at 3 print(next(G)) # 3 print(next(G)) # 4 print(next(G)) # 5 print(next(G)) # 6

5.虛擬環(huán)境-隔離

如果您只記得本文中的一件事,那么應(yīng)該是使用虛擬環(huán)境。

Photo by Matthew Kwong on Unsplash

Python應(yīng)用程序經(jīng)常使用來(lái)自具有復(fù)雜依賴(lài)關(guān)系的各種開(kāi)發(fā)人員的許多不同軟件包。 使用特定的庫(kù)設(shè)置開(kāi)發(fā)了不同的應(yīng)用程序,在該應(yīng)用程序中,無(wú)法使用其他庫(kù)版本來(lái)復(fù)制結(jié)果。 沒(méi)有一個(gè)可以滿(mǎn)足所有應(yīng)用程序要求的安裝環(huán)境。

conda create -n venv pip python=3.7 # select python version source activate venv ... source deactivate

因此,為每個(gè)應(yīng)用程序創(chuàng)建單獨(dú)的獨(dú)立虛擬環(huán)境至關(guān)重要,這可以使用pip或conda來(lái)完成。

總結(jié)

以上是生活随笔為你收集整理的我希望我一开始就知道的5个Python功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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