偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

兵貴神速!掌握這10個(gè)Python技巧,讓你代碼工作如魚得水

開發(fā) 后端
1000個(gè)讀者心中有1000個(gè)哈姆雷特,要問1000個(gè)程序員“什么才是最好的語言”,Java、Python、PHP、C++ 也都有自己的位置。但要問編程語言流行指數(shù)之王非,那真的非Python莫屬了。

 1000個(gè)讀者心中有1000個(gè)哈姆雷特,要問1000個(gè)程序員“什么才是最好的語言”,Java、Python、PHP、C++ 也都有自己的位置。但要問編程語言流行指數(shù)之王非,那真的非Python莫屬了。

[[286772]]

據(jù)Stack Overflow數(shù)據(jù)顯示,Python是使用量增長(zhǎng)比較快的編程語言。

福布斯新發(fā)布的一篇報(bào)告指出,python的使用量在去年增長(zhǎng)了456%。Netfix、IBM以及其它數(shù)以百計(jì)的公司都在使用python。包括Dropbox也是由python創(chuàng)建的。Dice的研究表明,python是世界上最熱門的技巧之一,根據(jù)編程語言的流行度指數(shù)來看,python同時(shí)也是很受歡迎的編程語言。

Python為何有如此大的魅力呢?

那是因?yàn)?,與其它編程語言相比,Python有以下5點(diǎn)優(yōu)勢(shì):

1、和主流平臺(tái)、操作系統(tǒng)兼容。

2、包含許多開源框架和工具。

3、編碼具有可讀性和可維護(hù)性

4、強(qiáng)大的標(biāo)準(zhǔn)庫

5、標(biāo)準(zhǔn)的測(cè)試驅(qū)動(dòng)開發(fā)

較低的學(xué)習(xí)門檻和廣闊的發(fā)展前景使得Python越來越受歡迎。今天,小芯就繼續(xù)給大家?guī)碛嘘P(guān)python非常有用的10個(gè)代碼小技巧,幫助你完成日常工作,請(qǐng)注意查收和學(xué)習(xí)喲~

 

10個(gè)Python小技巧

1. 用ZIP處理列表

假設(shè)要合并相同長(zhǎng)度的列表并打印結(jié)果。同樣有一種更通用的方式,即用zip()函數(shù)獲得想要的結(jié)果,代碼如下:

 

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

 

2. 使用python collections

Python collections是容器數(shù)據(jù)類型,即列表、集合、元組、字典。Collections模塊提供了可以增強(qiáng)代碼的高性能數(shù)據(jù)類型,使工作更加簡(jiǎn)潔容易。它還提供了許多功能,以下使用Counter() 函數(shù)進(jìn)行演示。

Counter() 函數(shù)采用一個(gè)可迭代對(duì)象(如列表或元組),并返回一個(gè)Counter字典。字典的鍵是迭代器中唯一存在的元素,每個(gè)鍵的值是該元素在迭代器中出現(xiàn)次數(shù)的計(jì)數(shù)。

為創(chuàng)建一個(gè)Counter對(duì)象,將一個(gè)迭代的(列表)傳遞給Counter()函數(shù),代碼如下。

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

3. 使用itertools

Python的itertools模塊是用于處理迭代器的工具集合。Itertools包含多種工具,用于生成輸入數(shù)據(jù)的可迭代結(jié)果。這里以itertools.combinations()為例。itertools.combinations()用于構(gòu)建組合。這些是輸入量的可能組合項(xiàng)。

舉一個(gè)現(xiàn)實(shí)中的例子來闡明以上觀點(diǎn):

假設(shè)一個(gè)錦標(biāo)賽中有4個(gè)隊(duì)伍,在聯(lián)賽階段,每個(gè)隊(duì)伍都要與其他每個(gè)隊(duì)伍進(jìn)行比賽。任務(wù)是列出所有比賽隊(duì)伍的可能組合。

代碼如下:

 

  1. importitertools 
  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')] 

 

需要注意的是,值的順序不重要。因?yàn)?'Team 1', 'Team 2')和('Team 2', 'Team 1')代表同一對(duì),所以輸出列表只需包含其中一個(gè)。相似的,可以使用itertools.permutations()以及來自該模塊的其他函數(shù)。如需更完整的參考資料,請(qǐng)查閱此教程。

4. 從函數(shù)中返回多個(gè)值

Python可從函數(shù)調(diào)用中返回多個(gè)值,這是許多其他流行編程語言所不具備的功能。在這種情況下,返回值應(yīng)為逗號(hào)分隔的值列表,然后python構(gòu)造一個(gè)元組并返回給調(diào)用方。代碼示例如下:

 

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

 

5. 使用列表推導(dǎo)式

列表推導(dǎo)式用于從其他可迭代對(duì)象中創(chuàng)建新列表。列表推導(dǎo)式返回列表時(shí),由包含表達(dá)式的方括號(hào)組成,該表達(dá)式對(duì)于每個(gè)元素以及用于循環(huán)遍歷每個(gè)元素的for循環(huán)執(zhí)行。由于對(duì)python解釋器進(jìn)行了優(yōu)化,可以在循環(huán)期間發(fā)現(xiàn)可預(yù)測(cè)的模式,因此列表推導(dǎo)速度更快。

如下,使用列表推導(dǎo)式計(jì)算前五個(gè)整數(shù)的平方:

 

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

 

再如,使用列表推導(dǎo)式查找兩個(gè)列表中的公共數(shù)字

 

  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] 

 

6. 將兩個(gè)列表轉(zhuǎn)換為一個(gè)字典

假設(shè)有兩個(gè)列表,一個(gè)列表內(nèi)容為學(xué)生姓名,另一個(gè)內(nèi)容為學(xué)生分?jǐn)?shù)。使用zip函數(shù),將這兩個(gè)列表轉(zhuǎn)換為一個(gè)字典,代碼如下:

 

  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} 

 

7. 字符串拼接

拼接字符串時(shí)可用for循環(huán)來逐個(gè)添加元素,但這非常低效(特別是當(dāng)列表很長(zhǎng)時(shí))。在python中,字符串是不可變的,因此拼接字符串時(shí),必須將左、右字符串復(fù)制到新的字符串中。

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

 

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

 

8. 使用sorted()函數(shù)

在python中使用內(nèi)置函數(shù)sorted()可以輕而易舉地對(duì)任何序列進(jìn)行排序,它能完成很多艱難的工作。sorted()可對(duì)任何序列(列表、元組)進(jìn)行排序,并返回已排序的元素列表。如下對(duì)數(shù)字進(jìn)行升序排列:

 

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

如下對(duì)字符串進(jìn)行降序排列:

 

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

9. 用enumerate()迭代

Enumerate()方法向可迭代對(duì)象添加一個(gè)計(jì)數(shù)器,并以枚舉對(duì)象的形式返回。

以下是一個(gè)經(jīng)典的編碼方面的面試問題(通常被稱為Fizz Buzz問題)。

編寫一個(gè)程序來打印列表中的數(shù)字。若數(shù)字是3的倍數(shù),輸出“fizz”;是5的倍數(shù),輸出“buzz”;既是3又是5的倍數(shù),輸出“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'

 

10. 使用python generators(生成器)

generator函數(shù)允許創(chuàng)建類似迭代器的函數(shù)。他們?cè)试S程序員以一種簡(jiǎn)單快速的方式創(chuàng)建迭代器。下面通過一個(gè)例子來解釋這個(gè)概念。

假設(shè)要對(duì)從1開始的前100000000個(gè)完全平方數(shù)求和。

看起來很容易對(duì)吧。使用列表推導(dǎo)式可以很輕松的做到這一點(diǎn),但是它的輸入量過大。下面為一示例:

 

  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") # Ittook 13.197494000000006 Secs to execute this method 

 

在增加求和的完全平方數(shù)時(shí),由于需要大量計(jì)算時(shí)間,這種方法并不夠靈活。這時(shí)python生成器就派上用場(chǎng)了。將方括號(hào)替換為圓括號(hào)后,列表推導(dǎo)式更改為生成器表達(dá)式。現(xiàn)在計(jì)算花費(fèi)的時(shí)間:

 

  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") # Ittook 9.53867000000001 Secs to execute this method 

 

如上,所花費(fèi)時(shí)間已大大減少。輸入量越大,減少效果越顯著。

 

小結(jié):

隨著人工智能的逐漸升溫,Python作為人工智能領(lǐng)域開發(fā)的首選語言,其地位也將越來越重要。以前的“學(xué)好數(shù)理化,走遍天下都不怕”,如今可能要改口了——“學(xué)好python,走遍天下都不怕”。

所以,還在等什么,趕緊學(xué)會(huì)這10種實(shí)用的python小技巧,相信你的日常工作會(huì)更加666~

責(zé)任編輯:華軒 來源: 讀芯術(shù)
相關(guān)推薦

2024-01-26 06:15:44

PythonCPython技巧

2025-02-17 08:50:00

CSS代碼JavaScript

2020-04-07 17:31:29

React容器程序員

2021-06-25 10:20:07

Linux技巧命令

2016-10-09 20:07:43

2020-03-31 09:47:04

Vue開發(fā)代碼

2019-04-29 08:31:25

PythonPandas數(shù)據(jù)

2025-01-10 08:38:16

2020-11-29 17:32:01

EmacsLinux

2020-07-03 14:50:23

Python代碼編程語言

2019-09-10 11:31:16

Python數(shù)據(jù)分析表達(dá)式

2020-07-07 14:35:41

Python數(shù)據(jù)分析命令

2016-10-11 09:11:52

tar命令歸檔

2024-01-08 17:09:07

Python解釋器CPython

2024-10-08 10:24:41

Python編程語言

2022-01-06 22:31:21

Python技巧代碼

2018-11-19 11:43:13

Python數(shù)據(jù)函數(shù)

2011-04-28 16:55:07

電子商務(wù)網(wǎng)站設(shè)計(jì)網(wǎng)站

2020-08-19 09:22:14

Python語言工具

2020-12-31 10:33:05

Python開發(fā)編程
點(diǎn)贊
收藏

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