日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python很重要的5大功能,要是能早點(diǎn)了解就好了!

 Python作為近幾年超級(jí)熱門的新興編程語言,其語言功能十分強(qiáng)大的特點(diǎn),大家有目共睹,想必不用贅述。

Python功能眾多,小芯曾用Python的交互式地圖和區(qū)塊鏈等功能創(chuàng)建了許許多多的應(yīng)用程序,令人振奮。

但也正因其功能繁多,初學(xué)者一開始是很難掌握所有功能的。

即使你是一名從其他語言(比如C語言或MATLAB語言)轉(zhuǎn)換過來的程序員,用更加抽象的Python編寫代碼對(duì)你來說也絕對(duì)是一次不同的體驗(yàn)。

但功能雖多,總有主次之分。

為了方便大家早點(diǎn)了解Python的一些大功能,小芯特別整理出了其中5大很重要的功能。

1. 生成器——內(nèi)存效率

打算計(jì)算大量的結(jié)果,但同時(shí)又想避免同時(shí)分配所有結(jié)果所需內(nèi)存,這時(shí)候會(huì)使用生成器。換句話說,它們即時(shí)生成值,但不會(huì)將先前生成的值存儲(chǔ)在內(nèi)存中,因此只需要將其迭代一次。 生成器常用于讀取大型文件或使用關(guān)鍵字yield生成無窮序列。在大多數(shù)數(shù)據(jù)科學(xué)項(xiàng)目中,筆者發(fā)現(xiàn)它頗有用處。 

 
 
 
  1. def  gen(n):    # an infinite sequence  generator that generates integers >= n 
  2.     while True: 
  3.         yield n 
  4.         n += 1 
  5. G =  gen(3)     # starts at 3 
  6. print(next(G))  # 3 
  7. print(next(G))  # 4 
  8. print(next(G))  # 5 
  9. print(next(G))  # 6 

python-generator hosted with by GitHub

2. 虛擬環(huán)境——隔離

若讀完本文,只能記住其中一條,那應(yīng)該是虛擬環(huán)境的使用。 

Python的應(yīng)用程序經(jīng)常使用很多不同的軟件包,而這些軟件包由具有復(fù)雜依賴關(guān)系的開發(fā)人員開發(fā)。不同的應(yīng)用程序由一種特定的庫設(shè)置開發(fā)出來,其結(jié)果無法由其他版本的庫復(fù)制。沒有一種安裝程序可以滿足所有應(yīng)用程序的要求。 

 
 
 
  1. conda create -n venv pippython=3.7  # select python version 
  2. source activate venv 
  3. ... 
  4. source deactivate 

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

3. 列表推導(dǎo)——緊致碼

很多人認(rèn)為lambda、map和filter是每個(gè)初學(xué)者都應(yīng)該學(xué)習(xí)的函數(shù)。雖然筆者認(rèn)為這些函數(shù)值得關(guān)注,但是由于它們?nèi)狈`活性,大多時(shí)候不是特別有用。 Lambda是將一次性使用的函數(shù)生成為一行的方法。若函數(shù)被多次調(diào)用,性能就會(huì)降低。另一方面,map將一種函數(shù)應(yīng)用于列表中的所有元素,而filter則會(huì)獲取集合中滿足用戶定義條件的元素子集。 

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

python-lambda hosted with by GitHub

列表推導(dǎo)是一種簡潔靈活的方法,可從其他具有靈活表達(dá)式和條件的列表中創(chuàng)建新列表。它由一個(gè)帶有表達(dá)式或函數(shù)的方括號(hào)構(gòu)成,只有當(dāng)元素滿足特定條件時(shí),才能應(yīng)用于列表中的每個(gè)元素。它也可以通過嵌套來處理嵌套列表,這比用map和filter要靈活得多。 

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

python-list-comprehension hosted with by GitHub

4. 列表操作——循環(huán)列表

Python允許在aList[-1]== aList[len(aList)-1]中出現(xiàn)負(fù)索引。因此,可以通過調(diào)用aList[-2]等其他元素來獲取列表中的倒數(shù)第二個(gè)元素。

還可以用aList[start:end:step]語法對(duì)列表進(jìn)行切片,該語法包括起始元素,但不包括終止元素。因此,調(diào)用aList[2:5]會(huì)得到[2, 3, 4]。也可以通過調(diào)用aList[::-1]來反轉(zhuǎn)列表,筆者發(fā)現(xiàn)這種技巧非常簡潔。 

列表也可以解壓縮為單獨(dú)的元素,或者解壓縮為元素和子列表,兩者混在一起,用星號(hào)標(biāo)出。 

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

python-unpacking hosted with by GitHub

5. 壓縮(Zipping)和列舉(enumerate) ——for循環(huán)

壓縮 (Zip)函數(shù)創(chuàng)建了一種迭代程序,該程序可聚合來自多個(gè)列表的元素。它允許在for循環(huán)中并行遍歷列表并進(jìn)行并行分類。用星號(hào)即可將其解壓縮。 

 
 
 
  1. numList  = [0, 1, 2] 
  2. engList  = ['zero', 'one', 'two'] 
  3. espList  = ['cero', 'uno', 'dos'] 
  4. print(list(zip(numList,  engList, espList))) 
  5. # [(0,  'zero', 'cero'), (1, 'one', 'uno'), (2, 'two', 'dos')] 
  6. for num,  eng, esp in zip(numList, engList, espList): 
  7.     print(f'{num} is {eng} in English and  {esp} in Spanish.') 
  8. # 0 is  zero in English and cero in Spanish. 
  9. # 1 is  one in English and uno in Spanish. 
  10. # 2 is  two in English and dos in Spanish. 

python-zip-1 hosted with by GitHub 

 
 
 
  1. Eng =  list(zip(engList, espList, numList)) 
  2. Eng.sort()  # sort by engList 
  3. a, b, c  = zip(*Eng) 
  4. print(a) 
  5. print(b) 
  6. print(c) 
  7. #  ('one', 'two', 'zero') 
  8. #  ('uno', 'dos', 'cero') 
  9. # (1, 2,  0) 

乍一看,列舉(Enumerate) 可能有點(diǎn)嚇人,但是后來就會(huì)發(fā)現(xiàn),在很多情況下使用列舉都很方便。它是一種經(jīng)常用于for循環(huán)的自動(dòng)計(jì)數(shù)器,因此無需在counter = 0 和counter += 1的情況下創(chuàng)建并初始化變量計(jì)數(shù)器。列舉(enumerate) 和壓縮(zip)是創(chuàng)建for循環(huán)時(shí)會(huì)用到的兩種功能很強(qiáng)大的工具。 

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

python-enumerate hosted with by GitHub 

當(dāng)然,除了這5種功能,Python還有許許多多其他好用的功能,歡迎大家給小芯留言自己最感興趣的功能。根據(jù)大家的留言,小芯會(huì)在下次Python文章中繼續(xù)為大家介紹更多大家感興趣的功能~


新聞名稱:Python很重要的5大功能,要是能早點(diǎn)了解就好了!
網(wǎng)址分享:http://www.5511xx.com/article/ccshghh.html