国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

可現學現用的10個Python技巧

譯文
開發 后端
本文介紹的10個Python代碼段可以用作你日常工作的參考。

[[312886]]

【51CTO.com快譯】據Stack Overflow聲稱,Python是增長最快的編程語言。《福布斯》的最新文章稱,Python去年的增長幅度高達456%。Netflix使用Python,IBM使用Python另外成百上千家公司都在使用Python。別忘了Dropbox。Dropbox也是用Python開發的。據Dice的研究顯示,Python也是熱門的必備技能之一;從《編程語言人氣指數》來看,它也是世界上最受歡迎的編程語言。

與其他編程語言相比,Python具有的一些優點包括:

  • 與主要的平臺和操作系統兼容
  • 有許多開源框架和工具
  • 可讀且可維護的代碼
  • 強大的標準庫
  • 標準的測試驅動型開發

本文將介紹10個實用的代碼技巧,它們可幫助你完成日常任務。

1. 連接字符串

你需要連接字符串列表時,可以通過逐個添加每個元素、使用for loop來實現此目的。但這么做效率很低,列表很長的話更是如此。在Python中,字符串不可變,因此對于每一對連接而言,必須將左右字符串復制到新字符串中。

一種更好的方法是使用join()函數,如下所示: 

  1. characters = ['p''y''t''h''o''n' 
  2. word = "".join(characters)  
  3. print(word) # python 

2. 使用列表推導

列表推導用于從其他可迭代對象(iterable)創建新列表。列表推導返回列表時,它們由包含表達式的方括號組成,該表達式針對每個元素連同for loop加以執行,以便對每個元素執行迭代處理。列表推導速度更快,因為它針對Python解釋器進行了優化,以便循環期間發現可預測的模式。

比如,假設使用列表推導來查找前五個整數的平方。 

  1. m = [x ** 2 for x in range(5)]  
  2. print(m) # [0, 1, 4, 9, 16] 

現在,假設使用列表推導從兩個列表中查找通用數字: 

  1. list_a = [1, 2, 3, 4]  
  2. list_b = [2, 3, 4, 5]  
  3. common_num = [a for a in list_a for b in list_b if a == b]  
  4. print(common_num) # [2, 3, 4] 

3. 用enumerate()進行迭代

enumerate()方法為可迭代對象添加一個計數器,并以枚舉對象的形式返回。

不妨解決通常名為Fizz Buzz問題的經典編碼面試問題。

編寫一個程序來打印輸出列表中的數字;如果是“3”的倍數,輸出“fizz”,而不是輸出數字;如果是“5”的倍數,輸出“buzz”;如果同時是3和5的倍數,輸出“fizzbuzz”。 

  1. numbers = [30, 42, 28, 50, 15]  
  2. for i, num in enumerate(numbers):  
  3. if num % 3 == 0 and num % 5 == 0:  
  4. numbers[i] = 'fizzbuzz'  
  5. elif num % 3 == 0:  
  6. numbers[i] = 'fizz'  
  7. elif num % 5 == 0:  
  8. numbers[i] = 'buzz'  
  9. print(numbers) # ['fizzbuzz''fizz', 28, 'buzz''fizzbuzz'

4. 處理列表時使用zip

假設你被賦予一項任務,合并長度相同的多個列表,并打印輸出結果?同樣,有一種更通用的方法獲得所需的結果,只需使用zip(),如以下代碼所示: 

  1. countries = ['France''Germany''Canada' 
  2. capitals = ['Paris''Berlin''Ottawa' 
  3. for country, capital in zip(countries,capitals):  
  4. print(country, capital) # France Paris  
  5. Germany Berlin  
  6. Canada Ottawa 

5. 使用itertools

Python itertools模塊是用于處理迭代器(iterator)的一系列工具。迭代器有多個工具可用于生成輸入數據的可迭代對象序列。此處以itertools.combinations()為例。itertools.combinations()用于構建組合。這些也是輸入值的可能分組。

不妨舉一個實際例子來闡明上面這點。

假設四支球隊參加比賽。在小組賽階段,每支球隊與另外每支球隊對抗。你的任務是為彼此對抗的每支球隊排出所有可能的組合。

不妨看一下以下代碼: 

  1. import itertools  
  2. friends = ['Team 1''Team 2''Team 3''Team 4' 
  3. list(itertools.combinations(friends, r=2)) # [('Team 1''Team 2'), ('Team 1''Team 3'), ('Team 1''Team 4'), ('Team 2''Team 3'), ('Team 2''Team 4'), ('Team 3''Team 4')] 

要注意的重要一點是,值的順序并不重要。由于('Team 1','Team 2')和('Team 2','Team 1')代表同一對,所以輸出列表中僅包含其中一個。同樣,我們可以使用itertools.permutations()以及該模塊中的其他函數。想了解更完整的內容,參閱這篇教程(https://medium.com/@jasonrigden/a-guide-to-python-itertools-82e5a306cdf8)。

6. 使用Python集合

Python集合是容器數據類型,即列表、組集、元組和字典。集合模塊提供了高性能的數據類型以改進你的代碼,大大簡化任務。集合模塊提供了許多函數。我在此處將使用Counter()函數。

Counter()函數拿來可迭代對象(比如列表或元組)后返回Counter Dictionary。字典的鍵將是可迭代對象中的獨特元素,而每個鍵的值將是可迭代對象中的元素計數。

想創建counter對象,將可迭代對象(列表)傳遞給Counter()函數,如以下代碼所示: 

  1. from collections import Countercount = Counter(['a','b','c','d','b','c','d','b'])  
  2. print(count) # Counter({'b': 3, 'c': 2, 'd': 2, 'a': 1}) 

想了解更完整的內容,參閱我的Python集合教程(https://towardsdatascience.com/a-hands-on-guide-to-python-collections-aa350cb399e3)。

7. 將兩個列表轉換成字典

假設我們有兩個列表,一個列表包含學生的姓名,第二個列表包含學生的分數。不妨看看如何將這兩個列表轉換成一個字典。使用zip函數,可以使用以下代碼完成此操作: 

  1. students = ["Peter""Julia""Alex" 
  2. marks = [84, 65, 77]  
  3. dictionary = dict(zip(students, marks))  
  4. print(dictionary) # {'Peter': 84, 'Julia': 65, 'Alex': 77} 

8. 使用Python生成器

生成器函數讓你可以聲明行為類似迭代器的函數。它們讓程序員能夠以快速、簡單和簡潔的方式生成迭代器。不妨舉例解釋這個概念。

假設你需要為前100000000個完美平方數求總和,從1開始。

是不是看起來很簡單?使用列表推導很容易做到這一點,但問題是輸入量很大。不妨看看以下代碼: 

  1. t1 = time.clock()  
  2. sum([i * i for i in range(1, 100000000)])  
  3. t2 = time.clock()  
  4. time_diff = t2 - t1  
  5. print(f"It took {time_diff} Secs to execute this method") # It took 13.197494000000006 Secs to execute this method 

增加需要求和的完美平方數時,我們意識到:由于較長的計算時間,這個方法行不通。這時候Python生成器可助一臂之力。將方括號換成圓括號后,我們將列表推導變成了生成器表達式。現在不妨計算所花的時間: 

  1. t1 = time.clock()  
  2. sum((i * i for i in range(1, 100000000)))  
  3. t2 = time.clock()  
  4. time_diff = t2 - t1  
  5. print(f"It took {time_diff} Secs to execute this method") # It took 9.53867000000001 Secs to execute this method 

可以看到,所花的時間已大幅縮短。如果是更龐大的輸入,這個效果會更顯著。

9. 從函數返回多個值

Python能夠從函數調用返回多個值,這是許多其他流行的編程語言缺少的功能。在這種情況下,返回值應是逗號分隔的值列表,然后Python構造一個元組并將其返回給調用方。 不妨看看以下代碼: 

  1. def multiplication_division(num1, num2):  
  2. return num1*num2, num1/num2  
  3. product, division = multiplication_division(15, 3)  
  4. print("Product=", product, "Quotient =", division) # Product= 45 Quotient = 5.0 

10. 使用sorted()函數

Python中對任何序列進行排序很容易,只需使用內置方法sorted(),它為你完成了所有棘手的工作。sorted()可對任何序列(列表和元組)進行排序,始終返回元素以排序的方式顯示的列表。不妨看看對數字列表進行升序排序。

  1. sorted([3,5,2,1,4]) # [1, 2, 3, 4, 5] 

另舉一個例子,對字符串列表進行降序排序。

  1. sorted(['france''germany''canada''india''china'], reverse=True) # ['india''germany''france''china''canada'

原文標題:10 Python Tips and Tricks You Should Learn Today,作者:Abhinav Sagar

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

 

責任編輯:龐桂玉 來源: 51CTO
相關推薦

2024-01-15 08:16:10

Maven插件簡化

2020-06-08 07:52:31

Python開發工具

2020-06-30 08:28:29

Vue開發前端

2021-03-15 08:13:19

JavaScript開發代碼

2014-07-29 13:55:10

程序員代碼

2018-11-28 08:15:09

2019-02-25 15:15:44

Windows 10Windows技巧

2011-07-07 10:21:56

2011-12-13 11:00:13

Android運行效果技巧

2019-07-10 15:51:40

Python數據分析代碼

2020-12-31 10:33:05

Python開發編程

2020-08-19 09:22:14

Python語言工具

2020-08-21 08:52:09

Python數據分析工具

2015-07-27 09:36:09

storyboard

2009-04-16 16:57:58

DotNetNuke優化網站開發

2020-11-09 08:06:37

HTML技巧上傳

2021-04-20 16:56:01

物聯網安全設備

2013-07-12 15:40:47

Android技巧

2020-06-10 10:30:48

Python 開發編程語言

2020-06-07 16:16:01

Python開發工具
點贊
收藏

51CTO技術棧公眾號

美日韩精品免费观看视频| 欧美一级视频一区二区| 羞羞免费视频| 精品一区二区综合| 粉嫩精品一区二区三区在线观看 | av在线免费网站| 亚洲成人av福利| 国产对白在线| 国产欧美精品在线观看| 欧美日韩在线不卡视频| 99久久精品国产一区| 黄色特一级视频| 国产.精品.日韩.另类.中文.在线.播放| 亚洲国产另类久久久精品极度| 国产精品毛片在线| 不卡一卡2卡3卡4卡精品在| 国产精品久久久久久影院8一贰佰| 午夜精品久久久久久久男人的天堂 | 亚洲视频在线观看网站| 看黄在线观看| 日韩精品视频在线观看网址| a'aaa级片在线观看| 亚洲激情 国产| 日韩三区免费| 不用播放器成人网| 噜噜噜狠狠夜夜躁精品仙踪林| 国语自产偷拍精品视频偷| 日本一区精品视频| 欧美性资源免费| 国产午夜一区| 99久久精品无码一区二区毛片| 国内精品久久久久久久影视麻豆 | 亚洲三级在线免费| 美女视频免费观看网站在线| 亚洲婷婷在线视频| 国产女王在线**视频| 一本一本大道香蕉久在线精品 | 国产色91在线| 欧美aaa大片| 精品视频在线免费看| 91av久久| 欧美寡妇偷汉性猛交| 日韩欧美自拍| 日本一区二区三区www| 国产精品综合二区| 成人三级av| 欧美日韩一区精品| 福利精品在线| 国产精品精品视频一区二区三区| 激情综合在线| 污污污污污污www网站免费| 国产亚洲精品7777| 视频三区在线观看| 日韩精品中文字幕在线播放| 久久久久毛片免费观看| 91精品国产综合久久久久久久久| 久久亚洲欧美| 久久精品午夜福利| 欧美午夜不卡视频| 亚洲www啪成人一区二区| 欧美亚洲另类视频| 日韩av一二三| 国产videos| 亚洲国产一区自拍| 亚洲另类春色校园小说| 另类视频在线观看+1080p| 26uuu亚洲综合色| 懂色av中文在线| 欧美日韩国产成人| 老司机精品视频网站| 成人网址大全| 日韩av有码在线| 91视频久久| 欧美一区二区.| 高清不卡在线观看| 51精品国产人成在线观看| 国模精品一区| 久久久国产影院| 欧美片第一页| 欧美日韩国产小视频在线观看| 91影院在线免费观看视频| 色偷偷色偷偷色偷偷在线视频| 久久久精品视频在线观看| 日韩理论电影| 亚洲av首页在线| 亚洲精品国产成人久久av盗摄 | 国产一区丝袜| 久久影院理伦片| 欧美国产禁国产网站cc| 黄色视屏免费在线观看| 国产91对白在线播放| 国产综合一区二区| 风间由美一区| 国产成人鲁鲁免费视频a| 国产成人在线视频播放| 91在线视频| 国产精品激情自拍| 久久久久免费观看| 亚洲一区站长工具| 久久av一区二区| 亚洲最新视频在线播放| h1515四虎成人| 日韩视频精品| 在线观看视频一区| 国产一区二区精品福利地址| 怡红院av亚洲一区二区三区h| 这里是久久伊人| 亚洲中无吗在线| 成人福利视频在| 欧美巨大黑人极品精男| 激情成人综合网| 亚洲无线看天堂av| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲一区二区精品3399| 精品国产欧美| 国产精品无码人妻一区二区在线| 日韩一级大片在线| 亚洲每日更新| p色视频免费在线观看| 亚洲www在线观看| 亚洲一二三四区| 亚洲尤物av| 别急慢慢来1978如如2| 在线免费看av不卡| 国产精品伊人色| 久蕉依人在线视频| 肉大捧一出免费观看网站在线播放| 精品久久久久久久久中文字幕| 在线观看美女网站大全免费| 97在线免费观看视频| 蜜桃91丨九色丨蝌蚪91桃色| 精品av中文字幕在线毛片| 成人xxxxx色| 国产a级片免费看| 欧美日韩国产麻豆| 伊人久久大香线蕉av超碰| 欧美在线一区二区三区四区| 欧美韩日一区二区三区| 最新国产在线观看| 亚洲精品一区二区精华| 超碰97久久| 粉嫩av四季av绯色av第一区| 在线亚洲一区二区| 亚洲经典三级| 四虎影院观看视频在线观看| 久久久亚洲福利精品午夜| 精品免费视频| 日产国产精品精品a∨| 亚洲精品日日夜夜| 亚洲涩涩av| 色哟哟精品视频| 成人97在线观看视频| 久久久不卡网国产精品一区| 久久精品一级| 欧美1819sex性处18免费| 国产999精品| 欧美性生交xxxxxdddd| 日韩午夜黄色| 91福利在线尤物| 黄色免费视频大全| 66m—66摸成人免费视频| 夜夜爽夜夜爽精品视频| 欧美在线1区| 激情网站在线| 熟女少妇在线视频播放| 欧美嫩在线观看| 欧美mv日韩mv亚洲| 亚洲欧美色综合| 亚洲小说欧美另类婷婷| 综合视频在线| 国产丝袜在线| 一个色的综合| 久久综合伊人77777尤物| 亚洲三级小视频| 亚洲黄色高清| 久久久成人av毛片免费观看| 亚洲免费av一区二区三区| 国产男人精品视频| 欧美精品一区二区三区在线| 久久夜色精品国产噜噜av| 加勒比久久综合| 丰满大乳少妇在线观看网站| 国产freexxxx性播放麻豆 | 一区二区成人av| 亚洲精品一二三| 久久综合影视| 久久精品国产亚洲blacked| av在线三区| www.玖玖玖| 国产亚洲欧美另类一区二区三区| 亚洲大胆人体av| 亚洲综合久久久久| 韩日精品视频一区| 日韩片欧美片| 久久人体av| 成年人网站在线| 成本人h片动漫网站在线观看| 成人黄色片免费| 国产伦精品一区二区三区视频孕妇| 欧美老女人性生活|