成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

5 個越早知道越好的 Python 特性

新聞 后端
Python 是近十年來興起的編程語言,并且被證明是一種非常強大的語言。我用 Python 構建了很多應用程序,從交互式地圖到區塊鏈。

 [[287174]]

Kirill Sharkovski 發布在 Unsplash 雜志上的照片

本文轉自雷鋒網,如需轉載請至雷鋒網官網申請授權。

Python 是近十年來興起的編程語言,并且被證明是一種非常強大的語言。我用 Python 構建了很多應用程序,從交互式地圖到區塊鏈。Python 有很多特性,初學者很難一開始就掌握所有的特性。

即使你是一個從其他語言(如 C 或 MATLAB)轉換過來的程序員,用更高抽象級別的 Python 編寫代碼絕對是另一種體驗。回顧起來,有很多 Python 特性如果我能早點知道,肯定能少走不少彎路。現在我想要重點介紹其中五個最重要的特性。

1.理解 List——壓縮代碼

很多人會將 lambda、map 和 filter 作為 Python 的「技巧」,每個初學者都應該學習這些技巧。雖然我相信它們是我們應該掌握的特性,但我發現由于缺乏靈活性,它們在大多數時候并不特別有用。

Lambda 是一種在一行中組合函數以供一次性使用的方法。如果函數被多次調用,性能將受到影響。另一方面,map 將函數應用于列表中的所有元素,而 filter 將獲取滿足用戶定義條件的集合中元素的子集。

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

 Anastase Maragos 發表在 Unsplash 雜志上的照片

列表理解是一種簡潔而靈活的方法,可以使用靈活的表達式和條件從其他列表創建列表。它是由方括號構造的,它有一個表達式或一個函數,只有當元素滿足某個條件時,該表達式或函數才應用于列表中的每個元素。它還可以嵌套來處理嵌套列表,并且比使用 map 和 filter 靈活得多。

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

2.列表循環

Python 允許使用負索引,其中 Altruts [-1]== Altrue[LeN(Listor)-1 ]。因此,我們可以通過調用 a list[-2] 等獲得列表中的倒數第二個元素。

我們還可以使用語法 aList[start:end:step] 對列表進行切片,其中包含起始元素,但不包含結束元素。因此,aList[2:5] 的結果是 [2,3,4]。我們也可以通過調用 a list[::-1] 來反轉列表,我發現這種技術非常優雅。

[[287175]]

Martin Shreder 發表在 Unsplash 雜志上的照片

列表也可以分解成單獨的元素,或者使用星號將元素和子列表混合。

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

3.壓縮和枚舉:for 循環

Zip 函數創建一個迭代器,該迭代器聚合來自多個列表的元素。它允許在 for 循環中并行遍歷列表并并行排序。它可以用星號來解壓縮。

  1. numList = [012]     
  2.  
  3. engList = ['zero''one''two']     
  4.  
  5. espList = ['cero''uno''dos']     
  6.  
  7. print(list(zip(numList, engList, espList)))     
  8.  
  9. # [(0'zero''cero'), (1'one''uno'), (2'two''dos')]     
  10.  
  11. for num, eng, esp in zip(numList, engList, espList):     
  12.  
  13. print(f'{num} is {eng} in English and {esp} in Spanish.')     
  14.  
  15. 0 is zero in English and cero in Spanish.     
  16.  
  17. 1 is one in English and uno in Spanish.     
  18.  
  19. 2 is two in English and dos in Spanish.     
  20.  
  21. Eng = list(zip(engList, espList, numList))     
  22.  
  23. Eng.sort() # sort by engList     
  24.  
  25. a, b, c = zip(*Eng)     
  26.  
  27. print(a)     
  28.  
  29. print(b)     
  30.  
  31. print(c)     
  32.  
  33. # ('one''two''zero')     
  34.  
  35. # ('uno''dos''cero')     
  36.  
  37. # (120)     

[[287176]]

Erol Ahmed 發表在 Unsplash 雜志上的照片

枚舉一開始可能看起來有點嚇人,但在許多情況下它是非常方便的。它是一個經常在 for 循環中使用的自動計數器,不需要在 for 循環中創建和初始化計數器變量 by counter=0 和 counter+=1。枚舉和 zip 是構造 for 循環時最強大的兩個工具。

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

   

4.生成器:內存效率

當我們打算對大量數據進行計算,但希望避免同時分配所有結果所需的內存時,會使用生成器。換句話說,它們會動態生成值,而不會將以前的值存儲在內存中,因此我們只能對它們進行一次迭代。

它們通常用于讀取大文件或使用關鍵字 yield 生成無限序列。我經常發現它在我的大多數數據科學項目中很有用。

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

5.虛擬環境:isolation

如果你讀完本文中只記得其中一條,那么應該是虛擬環境的使用。

[[287177]]

Matthew Kwong 發布在 Unsplash 上的照片

Python 應用程序通常使用很多不同的包,這些包來不同的開發人員,具有復雜的依賴關系。不同的應用程序是使用特定的庫設置開發的,其中的結果不能使用其他庫版本復制。不存在一次安裝就滿足所有應用要求的情況。

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

因此,為每個應用程序創建獨立的獨立虛擬環境 venv 是非常重要的,這可以使用 pip 或 conda 來完成。

責任編輯:張燕妮 來源: 雷鋒網
相關推薦

2020-07-16 08:46:50

Python 開發編程語言

2020-01-09 12:11:02

Python 開發編程語言

2018-06-19 11:00:27

服務器性能數據

2020-04-27 09:21:25

Android谷歌功能

2016-01-15 09:46:16

開源DJMixxx 2.0

2025-01-26 09:28:09

2015-06-04 17:35:45

融合媒體云華為

2015-11-09 12:54:55

Build 10586手機版Windows 10

2020-12-09 09:02:12

CSS 偽元素代碼

2024-01-05 17:16:03

2015-08-07 12:33:12

Java新特性編程

2015-08-28 10:31:20

Windows 10預覽版更新

2015-08-10 09:53:10

Windows 10隱私

2015-03-23 10:20:04

程序員精英程序員程序員忠告

2017-09-29 10:33:53

互聯網

2024-05-15 07:11:23

2021-07-27 12:45:07

NaaS網絡網絡即服務

2018-03-22 19:03:34

2013-02-26 09:42:14

奧斯卡小金人微軟
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区三区视频在线观看 | 伊人艹| www.99精品| 色综合久久天天综合网 | 久久久91精品国产一区二区三区 | 久久成人精品一区二区三区 | 日韩国产高清在线观看 | 高清视频一区二区三区 | 久久久久久成人 | 成人av一区二区亚洲精 | 在线观看成年视频 | 欧美激情精品久久久久 | 九九精品在线 | 免费av观看| 97国产在线视频 | 国产美女免费视频 | 欧美在线精品一区 | 男女羞羞视频免费看 | 国产成人久久 | 欧美国产日韩精品 | 国产精品99久久久久久久vr | 久久久爽爽爽美女图片 | 一区二区三区欧美在线观看 | 欧美日韩国产一区二区三区 | 亚洲欧洲成人在线 | 人人人艹 | 欧美在线视频网 | 一级毛片视频免费观看 | 国产在线一区二区三区 | 午夜精品在线 | 欧美成人一区二区 | 在线播放亚洲 | 成人免费视频一区 | jlzzjlzz欧美大全 | 99免费在线观看视频 | 欧美一区永久视频免费观看 | 精品中文视频 | 91www在线观看 | 成人av播放| 日日碰碰 | 羞羞午夜 |