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

我總結(jié)了十個Python性能調(diào)優(yōu)小技巧,你知道幾個?

開發(fā) 后端
我總結(jié)了10個Python性能調(diào)優(yōu)小技巧,一起來看看都有哪些吧!

[[435952]]

1 多多使用列表生成式

替換下面代碼:

  1. cube_numbers = [] 
  2.   for n in range(0,10): 
  3.     if n % 2 == 1: 
  4.       cube_numbers.append(n**3) 

為列表生成式寫法: 

  1. cube_numbers = [n**3 for n in range(1,10) if n%2 == 1] 

2 內(nèi)置函數(shù)

盡可能多使用下面這些內(nèi)置函數(shù): 

我總結(jié)了10個Python性能調(diào)優(yōu)小技巧,你知道幾個? 

3 盡可能使用生成器

單機處理較大數(shù)據(jù)量時,生成器往往很有用,因為它是分小片逐次讀取,最大程度節(jié)省內(nèi)存,如下網(wǎng)頁爬取時使用yield。 

  1. import requests 
  2. import re 
  3.  
  4. def get_pages(link): 
  5.   pages_to_visit = [] 
  6.   pages_to_visit.append(link) 
  7.   pattern = re.compile('https?'
  8.   while pages_to_visit: 
  9.     current_page = pages_to_visit.pop(0) 
  10.     page = requests.get(current_page) 
  11.     for url in re.findall('<a href="([^"]+)">', str(page.content)): 
  12.       if url[0] == '/'
  13.         url = current_page + url[1:] 
  14.       if pattern.match(url): 
  15.         pages_to_visit.append(url) 
  16.     # yield 
  17.     yield current_page 
  18. webpage = get_pages('http://www.example.com'
  19. for result in webpage: 
  20.   print(result) 

4 判斷成員所屬關(guān)系最快的方法使用 in 

  1. for name in member_list: 
  2.   print('{} is a member'.format(name)) 

5 使用集合求交集

替換下面代碼: 

  1. a = [1,2,3,4,5] 
  2. b = [2,3,4,5,6] 
  3.  
  4. overlaps = [] 
  5. for x in a: 
  6.   for y in b: 
  7.     if x==y: 
  8.       overlaps.append(x) 
  9.  
  10. print(overlaps) 

修改為set和求交集: 

  1. a = [1,2,3,4,5] 
  2. b = [2,3,4,5,6] 
  3.  
  4. overlaps = set(a) & set(b) 
  5.  
  6. print(overlaps) 

6 多重賦值

Python支持多重賦值的風格,要多多使用。 

  1. first_name, last_name, city = "Kevin""Cunningham""Brighton" 

7 盡量少用全局變量

Python查找最快、效率最高的是局部變量,查找全局變量相對變慢很多,因此多用局部變量,少用全局變量。

8 高效的itertools模塊

itertools模塊支持多個迭代器的操作,提供最節(jié)省內(nèi)存的寫法,因此要多多使用,如下求三個元素的全排列: 

  1. import itertools 
  2. iter = itertools.permutations(["Alice""Bob""Carol"]) 
  3. list(iter) 

9 lru_cache 緩存

位于functools模塊的lru_cache裝飾器提供了緩存功能,如下結(jié)合它和遞歸求解斐波那契數(shù)列第n: 

  1. import functools 
  2.  
  3. @functools.lru_cache(maxsize=128) 
  4. def fibonacci(n): 
  5.   if n == 0: 
  6.     return 0 
  7.   elif n == 1: 
  8.     return 1 
  9.   return fibonacci(n - 1) + fibonacci(n-2) 

因此,下面的遞歸寫法非常低效,存在重復求解多個子問題的情況: 

  1. def fibonacci(n): 
  2.   if n == 0: # There is no 0'th number 
  3.     return 0 
  4.   elif n == 1: # We define the first number as 1 
  5.     return 1 
  6.   return fibonacci(n - 1) + fibonacci(n-2) 

10 內(nèi)置函數(shù)、key和itemgetter

上面提到盡量多使用內(nèi)置函數(shù),如下對列表排序使用key,operator.itemgetter: 

  1. import operator 
  2. my_list = [("Josh""Grobin""Singer"), ("Marco""Polo""General"), ("Ada""Lovelace""Scientist")] 
  3. my_list.sort(key=operator.itemgetter(0)) 
  4. my_list 

 

 

責任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2024-11-11 08:11:39

2023-12-15 10:42:05

2024-09-30 10:05:00

2024-01-30 00:40:10

2023-10-30 18:00:00

Docker命令開源平臺

2023-08-29 07:52:09

CSS庫網(wǎng)絡(luò)動畫

2022-03-30 15:53:18

標簽頁用戶設(shè)計

2021-05-12 09:00:00

WebReactJavaScript

2023-04-10 11:25:29

工程交流DX

2024-11-15 10:45:56

2023-02-07 08:00:00

MySQL數(shù)據(jù)庫技巧

2023-03-31 08:10:50

2020-03-25 10:27:59

Python語言

2021-09-15 09:20:37

Python函數(shù)代碼

2010-06-18 09:17:51

jQuery

2025-04-09 00:01:05

2020-02-23 23:29:07

Python編程開發(fā)

2024-12-03 14:33:42

Python遞歸編程

2021-02-05 16:20:54

代碼Linux技巧

2021-02-16 16:43:21

工具性能調(diào)優(yōu)
點贊
收藏

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

主站蜘蛛池模板: 伊人二区 | 国产精品久久久久一区二区三区 | 国产中文区二幕区2012 | 18gay男同69亚洲网站 | 亚洲国产成人精品久久 | www.亚洲视频| 亚洲国产欧美在线 | a毛片| 久草a√| 日韩一二区在线观看 | 天堂成人国产精品一区 | 日韩在线电影 | 91精品久久 | 国产精品欧美一区二区三区 | 国产精品一区二区av | 免费av在线| www.久| 午夜国产在线 | 欧美精品一二三 | 狠狠干在线 | 狠狠操天天操 | 黄色国产视频 | 久久精品a级毛片 | 欧美激情综合 | 一区二区三区四区国产 | 久久久精品网站 | 久久久久久久久一区 | 久久久精品一区二区三区 | 97在线观看 | 日日干夜夜操 | 久一精品 | 99亚洲精品 | 91精品久久久久久久久中文字幕 | 91九色视频在线 | 国产精品1区2区3区 国产在线观看一区 | 国产精品18久久久久久白浆动漫 | 午夜国产| 免费黄色片在线观看 | 免费激情网站 | 国产做a爱片久久毛片 | 亚洲精品中文字幕 |