自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你需要知道的5個Python技巧

開發(fā) 后端
Python有如此出色的支持網(wǎng)絡(luò),似乎一次可以解決很多問題。但初學者可能會對此感到困惑。在這里,筆者列出了5個最有用的代碼段,這些代碼段進一步提高了筆者的水平,使代碼變得更好。

Python有如此出色的支持網(wǎng)絡(luò),似乎一次可以解決很多問題。人們應(yīng)該認識到這是正?,F(xiàn)象。

但初學者可能會對此感到困惑。人們可以找到大量資源來解決基礎(chǔ)知識問題,但然而呢?要學習哪些資源以不斷進步呢?

在這里,筆者列出了5個最有用的代碼段,這些代碼段進一步提高了筆者的水平,使代碼變得更好。

下文將介紹如何在代碼中應(yīng)用這5個代碼段。

[[320144]]

1. 列表推導(dǎo)式

有人或許以前聽說過這些。Python中的一種編碼模式十分常見,因此需要進行修改。使用for循環(huán)創(chuàng)建列表是列表推導(dǎo)的價值所在。

列表推導(dǎo)式可讀且簡潔,也確實需要花費一些時間來了解發(fā)生了什么。下面將深入研究是否可以解決這個問題。

創(chuàng)建列表時應(yīng)考慮列表推導(dǎo)式。列表推導(dǎo)式從一組方括號開始。先不管語法,以便展示兩種語言的相似之處

  1. list_comp = [expression for itemin items] 

任務(wù)是要替換一個for循環(huán),該循環(huán)將項目添加到列表中。

  1. new_list = [] 
  2. for item in old_list: 
  3.     new_list.append(item**2) 

注:

  • 調(diào)用名為new_list is calledt
  • for循環(huán)遍歷舊列表中的項目
  • 使用添加方法將item ** 2添加到新列表中 

目前為止很簡單。

列表推導(dǎo)如下所示

  1. new_list = [item**2 for item inold_list] 

注:

  • 將表達式item **2作為要添加到列表中的表達式,這首先出現(xiàn)在列表推導(dǎo)式中。
  • 之后的for循環(huán)是要迭代的循環(huán)
  • 將其括在方括號中并為其分配變量new_list意味著,為循環(huán)的每個項目將表達式item ** 2添加到new_list中。

沒有附加方法或是不需要,一行代碼正適合!為了選擇要添加的內(nèi)容,甚至可以添加條件語句。此功能還擴展到集合和詞典!甚至可以使用嵌套的for循環(huán)編寫列表推導(dǎo)式!

請注意,可能會出現(xiàn)過度使用的情況!僅當列表循環(huán)很簡單并且明確要創(chuàng)建列表時,才會使用列表推導(dǎo)。

[[320145]]

2.生成器表達式——節(jié)省內(nèi)存使用量

當擁有大量數(shù)據(jù)集并需要對其進行迭代或從中獲取結(jié)果,卻無法將所有數(shù)據(jù)存儲在內(nèi)存中時,應(yīng)想到生成器函數(shù)。除了不返回而為關(guān)鍵字yield進行切換操作,生成器函數(shù)非常像一個函數(shù)。

生成器函數(shù)創(chuàng)建了迭代器,而迭代器需要強制輸出它所擁有的值。它們不會在列表或集合中存儲對象。一次也只輸出一項。這稱為延遲循環(huán)。因此,讀取大文件時使用生成器。

  1. def gen(n):                            
  2.  
  3.    while True: 
  4.  
  5.        yield n 
  6.  
  7.        n += 1                                                      G = gen(3)     # starts at 3 
  8.  
  9. print(next(G)) # 3 
  10.  
  11. print(next(G)) # 4 
  12.  
  13. print(next(G)) # 5 
  14.  
  15. print(next(G)) # 6 

注:

  • 創(chuàng)建函數(shù)gen
  • Yield關(guān)鍵字存儲值n,一直保留到調(diào)用next()方法為止
  • 使用賦值運算符,將1加到n
  • 這是一個無限循環(huán),并一直持續(xù)
  • 調(diào)用next()方法,它將繼續(xù)輸出值

現(xiàn)在,這些值不會被存儲,只有在調(diào)用next()方法時才會跳出。生成器創(chuàng)建一個迭代器,然后依賴next()方法輸出值。

當有一個大數(shù)據(jù)集并且想要流式傳輸數(shù)據(jù)而不會使內(nèi)存溢出時,這將很有用。

3. 使用zip迭代兩個對象

經(jīng)常想迭代多個對象,以便能從每個對象中收集數(shù)據(jù)。Zip是允許執(zhí)行此操作的函數(shù)!如果需要迭代充分理解文件名及其對應(yīng)的鏈接,可以這樣做。

  1. for file_name, link in zip(names, links): 
  2.  
  3.    print(file_name, link) 

這將同時進入兩個對象,返回一個元組以及每個元組中的對應(yīng)項。在循環(huán)中,將元組解壓為單獨的值file_name和link. zip()??梢愿鶕?jù)需要選擇任意數(shù)量的集合,但是當最短的集合用盡時它將停止。

通過本文提及的列表推導(dǎo)式,Zip函數(shù)可用于迭代同一對象中的成對元素。

例如:

  1. differences = [next_el - elt for el, next_el in zip(items, items[1:]) 

4. 計數(shù)器——生成對象的計數(shù)

[[320146]]

來源:Pexels

計數(shù)器是字典的一個子類,其中對象的元素是鍵,而對象中項目的計數(shù)是值。它對計算對象的數(shù)量有效。訪問計數(shù)器時需要導(dǎo)入內(nèi)置的collections模塊。

假設(shè)要計算列表中所有出現(xiàn)的字符串。

  1. import collections 
  2. counts = Counter([ Fred ,  Samantha ,  Jean-Claude ,  Samantha ]) 
  3. print(counts) 

輸出:

  1. Counter({ Samantha : 2,  Fred :1,  Jean-Claude : 1}) 

計數(shù)器類的優(yōu)點是可以對其進行更新,并且可以使用字典API來訪問值。

  1. from collections import Counter 
  2. c = Counter( abcdaab )for letter in  abcde : 
  3.     print(letter, : , c[letter]) 

輸出:

  1. a : 3 
  2. b : 2 
  3. c : 1 
  4. d : 1 
  5. e : 0 

注:

  • 使用字符串“ abcdaab”將c分配給Counter子類。計數(shù)器類提供每個字符的單獨計數(shù)。c [item]可以像字典一樣被訪問。
  • for循環(huán),用于迭代字符串“abcde”,并為每個字符串分配letter。
  • 輸入字符串字符,打印可變letter并可以像字典一樣。每個字母的計數(shù)由c [letter]訪問。

5. 鏈接多個集合

[[320147]]

來源:Pexels

如需一次迭代多個集合,則itertools模塊中的鏈接方法是實現(xiàn)這一目標的好方法。

  1. for name in itertools.chain(first_name_list, second_name_list): 
  2.  
  3.   create_person(name) 

在耗盡之前,這將迭代第一個集合,然后繼續(xù)進行下一個,依此類推。

希望您喜歡這篇文章。

 

責任編輯:趙寧寧 來源: 讀芯術(shù)
相關(guān)推薦

2024-04-03 10:29:13

JavaScrip優(yōu)化技巧

2013-03-04 09:34:48

CSSWeb

2023-01-09 17:23:14

CSS技巧

2018-09-10 09:26:33

2022-07-06 15:51:48

瀏覽器開發(fā)者工具

2022-12-12 13:19:11

Vue3開發(fā)技巧

2023-03-31 08:10:50

2023-03-19 16:02:33

JavaScrip技巧編程語言

2022-04-28 12:17:26

瀏覽器連字符hyphens

2019-12-09 16:41:40

5G運營商韓國

2021-12-08 23:38:25

Python工具代碼

2019-10-25 08:50:36

Windows 10技巧竅門

2011-09-20 10:56:35

云計算PaaS

2022-04-29 09:00:00

Platform架構(gòu)內(nèi)核線程

2022-08-10 09:03:35

TypeScript前端

2015-09-20 16:23:27

2010-06-03 11:39:28

網(wǎng)絡(luò)性能

2013-07-11 13:56:37

大數(shù)據(jù)

2022-07-26 09:02:15

ES6ES13ECMAScript

2023-07-11 09:07:49

數(shù)組Promise方法
點贊
收藏

51CTO技術(shù)棧公眾號