日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
你與數(shù)據(jù)科學(xué)家只差這26條Python技巧

Python是目前世界上***的編程語(yǔ)言之一。因?yàn)?

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出瑪沁免費(fèi)做網(wǎng)站回饋大家。

1.它容易學(xué)習(xí)

2.它用途超廣

3.它有非常多的開(kāi)源支持(大量的模塊和庫(kù))

作者 Peter Gleeson 是一名數(shù)據(jù)科學(xué)家,日常工作幾乎離不python。一路走來(lái),他積累了不少有用的技巧和tips,現(xiàn)在就將這些技巧分享給大家。這些技巧將根據(jù)其首字母按A-Z的順序進(jìn)行展示。

ALL OR ANY

Python之所以成為這么一門受歡迎的語(yǔ)言一個(gè)原因是它的可讀性和表達(dá)能力非常強(qiáng)。Python也因此經(jīng)常被調(diào)侃為“可執(zhí)行的偽代碼”。不信你看:

 
 
 
  1. x = [True, True, False] 
  2. if any(x): 
  3.     print("At least one True") 
  4. if all(x): 
  5.     print("Not one False") 
  6. if any(x) and not all(x): 
  7.     print("At least one True and one False") 

BASHPLOTIB

你想要在控制臺(tái)繪圖嘛?

 
 
 
  1. $ pip install bashplotlib 

現(xiàn)在,你的控制臺(tái)中就可以有圖了

COLLECTIONS

Python有一些很棒的默認(rèn)數(shù)據(jù)類型,但是有時(shí)候他們并不會(huì)像你所希望的那樣發(fā)揮作用。 
幸運(yùn)的是,Python 標(biāo)準(zhǔn)庫(kù)提供了collection模塊。它讓你可以使用更為多樣數(shù)據(jù)類型。

 
 
 
  1. from collections import OrderedDict, Counter 
  2. # Remembers the order the keys are added! 
  3. x = OrderedDict(a=1, b=2, c=3) 
  4. # Counts the frequency of each character 
  5. y = Counter("Hello World!") 

DIR

面對(duì)一個(gè)Python對(duì)象,你是否曾想過(guò)可以直接看到其屬性?你也許可以試試以下的代碼:

 
 
 
  1. >>> dir() 
  2. >>> dir("Hello World") 
  3. >>> dir(dir) 

這是運(yùn)行Python的時(shí)候一個(gè)非常有用的功能,用于動(dòng)態(tài)探索你所使用的對(duì)象和模塊。更多詳情,可以查看這里:https://docs.python.org/3/library/functions.html#dir

EMOGI

對(duì)的,你沒(méi)看錯(cuò)! [[256624]]

 
 
 
  1. $ pip install emoji 

用python來(lái)創(chuàng)建表情包,你也可以。

 
 
 
  1. from emoji import emojize 
  2. print(emojize(":thumbs_up:")) 

:+1:

FROM_GUTURE_IMPORT

Python非常受歡迎,這也就導(dǎo)致了它的版本更新非??欤碌陌姹就鶗?huì)有很多新特性。你不更新,就無(wú)法使用。

然而,不要害怕。__future__ 模塊可以讓你導(dǎo)入未來(lái)版本的功能。有點(diǎn)像時(shí)空穿梭有木有!

 
 
 
  1. from __future__ import print_function 
  2. print("Hello World!") 

GEOPY

對(duì)于程序猿來(lái)說(shuō)地理可能是一個(gè)非常有挑戰(zhàn)性的領(lǐng)域。但是,geopy模塊則讓它變得非常簡(jiǎn)單。

 
 
 
  1. $ pip install geopy 

它通過(guò)提取一系列不同地理編碼服務(wù)的api來(lái)工作,讓你能夠獲得一個(gè)地方的完整街道地址、緯度、經(jīng)度,甚至海拔。

這里面同時(shí)還包含一個(gè)有用的“距離”類別。它能使用你選定的度量去計(jì)算了兩個(gè)地點(diǎn)之間的距離。

 
 
 
  1. from geopy import GoogleV3 
  2. place = "221b Baker Street, London" 
  3. location = GoogleV3().geocode(place) 
  4. print(location.address) 
  5. print(location.location) 

HOWDOI

有時(shí)候你碰到了一個(gè)編程問(wèn)題,覺(jué)得自己之前明明見(jiàn)過(guò)它的解決方法,但是卻記不起來(lái)具體是怎么樣的了。于是你想要去StackOverflow上找,但又不想離開(kāi)這個(gè)終端。這個(gè)時(shí)候,你需要下面這個(gè)工具——howdoi

 
 
 
  1. $ pip install howdoi 

你所遇到的任何問(wèn)題都可以問(wèn)它,它會(huì)盡他所能給你返回一個(gè)答案。

 
 
 
  1. $ howdoi vertical align css 
  2. $ howdoi for loop in java 
  3. $ howdoi undo commits in git 

需要注意的是——它只從StackOverflow最頂端的答案中抓取代碼。所以它給你返回的不總是最有用的信息...

 
 
 
  1. $ howdoi exit vim 

INSPECT

Python的inspect模塊用于收集Python對(duì)象的信息,可以獲取類或函數(shù)的參數(shù)的信息,源碼,解析堆棧等等

下方的代碼樣例使用了 inspect.getsource() 來(lái)打印它自身的源碼。同樣還使用了 inspect.getmodule()來(lái)打印定義了inspect.getmodule()的模塊。***一行代碼則是打印了本行代碼所在的行號(hào)。在本例中,就是 4 。

 
 
 
  1. import inspect 
  2. print(inspect.getsource(inspect.getsource)) 
  3. print(inspect.getmodule(inspect.getmodule)) 
  4. print(inspect.currentframe().f_lineno) 

inspect模塊可以有效地讓你知道你的代碼是如何工作的,你也可以利用它來(lái)完成一些個(gè)人的源碼。

JEDI

Jedi庫(kù)是一個(gè)代碼自動(dòng)補(bǔ)齊和靜態(tài)分析的庫(kù)。它可以使你更快更高效地書(shū)寫代碼。 
除非你在開(kāi)發(fā)自己的編輯器,否則你可能會(huì)非常喜歡將Jedi作為自己的編輯插件。

你可能已經(jīng)正在使用Jedi而只是沒(méi)發(fā)現(xiàn)。IPython項(xiàng)目就是利用Jedi來(lái)實(shí)現(xiàn)其自動(dòng)補(bǔ)全功能。

**KWARGS

無(wú)論你學(xué)習(xí)那種語(yǔ)言,在這條學(xué)習(xí)之路上總有那么一些里程碑。在Python的編程學(xué)習(xí)中,理解神秘的**kwargs語(yǔ)法應(yīng)該算是一個(gè)重要的里程碑。

雙星“**”放在字典的前面可以讓你將字典的內(nèi)容作為命名參數(shù)傳遞給函數(shù)。字典的鍵是參數(shù)的名字,鍵的值作為參數(shù)的值傳遞給函數(shù)。如下所示:

 
 
 
  1. dictionary = {"a": 1, "b": 2} 
  2. def someFunction(a, b): 
  3.     print(a + b) 
  4.     return 
  5. # these do the same thing: 
  6. someFunction(**dictionary) 
  7. someFunction(a=1, b=2) 

當(dāng)你想要?jiǎng)?chuàng)建一個(gè)函數(shù),它需要能處理事先沒(méi)有定義過(guò)的參數(shù),那么就要用到前面提到的技巧了。 

LIST COMPREHENSIONS

List comprehensions(列表推導(dǎo)式)

列表推導(dǎo)式可以說(shuō)是我最喜歡的Python技巧之一。這種表達(dá)式可以讓你寫出像自然語(yǔ)言一樣易于理解并且還很簡(jiǎn)潔的代碼。

你可以通過(guò)這個(gè)鏈接了解更多關(guān)于列表推導(dǎo)式的用法。地址:https://www.learnpython.org/en/List_Comprehensions

 
 
 
  1. numbers = [1,2,3,4,5,6,7] 
  2. evens = [x for x in numbers if x % 2 is 0] 
  3. odds = [y for y in numbers if y not in evens] 
  4. cities = ['London', 'Dublin', 'Oslo'] 
  5. def visit(city): 
  6.     print("Welcome to "+city) 
  7. for city in cities: 
  8.     visit(city) 

MAP

Python有許多非常有用的內(nèi)置函數(shù)。其中一個(gè)就是map()——特別是和lambda函數(shù)相結(jié)合的時(shí)候。

 
 
 
  1. x = [1, 2, 3] 
  2. y = map(lambda x : x + 1 , x) 
  3. # prints out [2,3,4] 
  4. print(list(y)) 

在這個(gè)例子中,map()對(duì)x中的每一個(gè)元素都應(yīng)用了一個(gè)簡(jiǎn)單的lambda函數(shù)。它會(huì)返回一個(gè)map對(duì)象,這個(gè)對(duì)象可以被轉(zhuǎn)化成可迭代對(duì)象,如列表或者元組。

NEWSPAPER3K

newspaper3k,如果你還沒(méi)有見(jiàn)過(guò)它,那么你可能會(huì)被這個(gè)Python newspaper模塊所驚艷到。 
它可以讓你檢索到一系列國(guó)際領(lǐng)先出版物中的新聞和相關(guān)的元數(shù)據(jù)。你可以檢索圖片、文本和作者名。它甚至有一些內(nèi)置的自然語(yǔ)言處理功能。所以,如果你正在考慮使用BeautifulSoup 或其他自制的爬蟲(chóng)庫(kù)來(lái)應(yīng)用于你的下一個(gè)項(xiàng)目。那么,省省時(shí)間和精力吧,你其實(shí)只需要$ pip install newspaper3k。

OPERATOR OVERLOADING(操作符重載)

Python支持操作符重載?!安僮鞣剌d”其實(shí)是個(gè)簡(jiǎn)單的概念,你是否曾經(jīng)想過(guò)為什么Python可以讓你使用“+”操作符來(lái)同時(shí)實(shí)現(xiàn)加法和連接字符串?這就是操作符重載在發(fā)揮作用。

你可以定義使用Python標(biāo)準(zhǔn)操作符符號(hào)的對(duì)象,這可以讓你在特定的環(huán)境中使用特定的對(duì)象,就像下方的例子一樣。

 
 
 
  1. class Thing: 
  2.     def __init__(self, value): 
  3.         self.__value = value 
  4.     def __gt__(self, other): 
  5.         return self.__value > other.__value 
  6.     def __lt__(self, other): 
  7.         return self.__value < other.__value 
  8. something = Thing(100) 
  9. nothing = Thing(0) 
  10. # True 
  11. something > nothing 
  12. # False 
  13. something < nothing 
  14. # Error 
  15. something + nothing 

PPRINT

Python的默認(rèn)print函數(shù)可以滿足日常的輸出任務(wù),但如果要打印更大的、嵌套式的對(duì)象,那么使用默認(rèn)的print函數(shù)打印出來(lái)的內(nèi)容會(huì)很丑陋。

這個(gè)時(shí)候我們就需要pprint了,它可以讓復(fù)雜的結(jié)構(gòu)型對(duì)象以可讀性更強(qiáng)的格式顯示。這對(duì)于經(jīng)常要面對(duì)非普通數(shù)據(jù)結(jié)構(gòu)的Python開(kāi)發(fā)者來(lái)說(shuō)是必不可少的工具。

 
 
 
  1. import requests 
  2. import pprint 
  3. url = 'https://randomuser.me/api/?results=1' 
  4. users = requests.get(url).json() 
  5. pprint.pprint(users) 

QUEUE(隊(duì)列)

Python支持多線程,它是通過(guò)標(biāo)準(zhǔn)庫(kù)中的Queue模塊來(lái)實(shí)現(xiàn)的。這個(gè)模塊可以讓你實(shí)現(xiàn)隊(duì)列數(shù)據(jù)結(jié)構(gòu)。這種數(shù)據(jù)結(jié)構(gòu)可以讓你根據(jù)特定的規(guī)則添加和檢索條目。

“先進(jìn)先出”(FIFO)隊(duì)列可以讓你按照添加對(duì)象的順序來(lái)檢索他們?!昂筮M(jìn)先出”(LIFO)隊(duì)列可以讓你首先訪問(wèn)最近添加的對(duì)象。***,優(yōu)先隊(duì)列可以讓你根據(jù)他們排序的順序進(jìn)行檢索。

_REPR_

當(dāng)你定義一個(gè)類的時(shí)候,提供一個(gè)方法可以返回用來(lái)表示該類對(duì)象的可打印字符串會(huì)非常有用。例如:

 
 
 
  1. >>> file = open('file.txt', 'r') 
  2. >>> print(file) 
  3.  

這使得debug更加方便,具體的定義方式如下:

 
 
 
  1. class someClass: 
  2.     def __repr__(self): 
  3.         return "
  4. someInstance = someClass() 
  5. # prints  
  6. print(someInstance) 

SH

sh庫(kù)讓你像調(diào)用方法那樣調(diào)用系統(tǒng)中的命令。

 
 
 
  1. import sh 
  2. sh.pwd() 
  3. sh.mkdir('new_folder') 
  4. sh.touch('new_file.txt') 
  5. sh.whoami() 
  6. sh.echo('This is great!') 

TYPE HINT(類型提示)

Python是一種動(dòng)態(tài)類型語(yǔ)言。當(dāng)你定義變量、函數(shù)、類別的時(shí)候,你不需要指定數(shù)據(jù)的類型。這可以大大提升你的開(kāi)發(fā)速度,但也是有代價(jià)的。你可能會(huì)因?yàn)橐粋€(gè)簡(jiǎn)單的輸入問(wèn)題而導(dǎo)致運(yùn)行出錯(cuò)。

在Python3.5之后,這就不是問(wèn)題了,在定義函數(shù)的時(shí)候你可以自主選擇要不要提供類型提示。

 
 
 
  1. def addTwo(x : Int) -> Int: 
  2.     return x + 2 

你還可以定義類型的別名:

 
 
 
  1. from typing import List 
  2. Vector = List[float] 
  3. Matrix = List[Vector] 
  4. def addMatrix(a : Matrix, b : Matrix) -> Matrix: 
  5.   result = [] 
  6.   for i,row in enumerate(a): 
  7.     result_row =[] 
  8.     for j, col in enumerate(row): 
  9.       result_row += [a[i][j] + b[i][j]] 
  10.     result += [result_row] 
  11.   return result 
  12. x = [[1.0, 0.0], [0.0, 1.0]] 
  13. y = [[2.0, 1.0], [0.0, -2.0]] 
  14. z = addMatrix(x, y) 

雖然不是強(qiáng)制性的,類型注釋可以讓你的代碼理解起來(lái)更加簡(jiǎn)單。它們也允許你使用類型檢測(cè)工具在運(yùn)行之前捕獲這些零散的類型錯(cuò)誤。如果你正在從事大型、復(fù)雜的項(xiàng)目,那么類型注釋也許會(huì)非常有幫助 

UUID

通過(guò)Python標(biāo)準(zhǔn)庫(kù)中的uuid模塊,可以快速并簡(jiǎn)單地生成統(tǒng)一的唯一ID(又稱UUID).

 
 
 
  1. import uuid 
  2. user_id = uuid.uuid4() 
  3. print(user_id) 

UUID是128位的全局唯一標(biāo)識(shí)符,通常由32字節(jié)的字符串表示。它可以保證時(shí)間和空間的唯一性,也稱為GUID,全稱為:UUID —— Universally Unique IDentifier,Python 中叫 UUID。它通過(guò)MAC地址、時(shí)間戳、命名空間、隨機(jī)數(shù)、偽隨機(jī)數(shù)來(lái)保證生成ID的唯一性。

VRITUAL ENVIRONMENTS

這可能是我最喜歡的Python技巧了。你可能經(jīng)常要處理不止一個(gè)Python項(xiàng)目,不幸的是,有時(shí)候不同項(xiàng)目會(huì)依賴不同的Python版本。這個(gè)時(shí)候,你應(yīng)該在系統(tǒng)里安裝哪個(gè)Python版本呢?

幸運(yùn)的是,Python可以支持建立不同的虛擬環(huán)境來(lái)滿足不同的版本需求。

 
 
 
  1. python -m venv my-project 
  2. source my-project/bin/activate 
  3. pip install all-the-modules  

現(xiàn)在你可以在一臺(tái)機(jī)器上安裝和運(yùn)行各個(gè)獨(dú)立版本的Python。太棒了!

WIKIPEDIA

Wikipedia有一個(gè)很棒的API,它可以讓用戶通過(guò)編程訪問(wèn)到維基的詞條內(nèi)容。使用Python中的wikipedia模塊可以讓你以最便捷的方式訪問(wèn)該API。

 
 
 
  1. import wikipedia 
  2. result = wikipedia.page('freeCodeCamp') 
  3. print(result.summary) 
  4. for link in result.links: 
  5.     print(link) 

與真實(shí)站點(diǎn)一樣,該模塊支持多種語(yǔ)言、頁(yè)面消除歧義、隨機(jī)頁(yè)面檢索,甚至還有donate()方法。

YAML

YAML是“YAML不是一種標(biāo)記語(yǔ)言”的外語(yǔ)縮寫。它是一個(gè)數(shù)據(jù)格式語(yǔ)言,是JSON的父集。和JSON不同的是,它可以存儲(chǔ)更復(fù)雜的對(duì)象,并且可以引用自身的元素。你還可以寫注釋,這讓YAML特別適合于書(shū)寫配置文件。

PyYAML模塊可以讓你使用Python調(diào)用YAML。使用下列語(yǔ)句安裝:

 
 
 
  1. $ pip install pyyaml 

然后導(dǎo)入到項(xiàng)目中:

 
 
 
  1. import yaml 

PyYAML 使你能夠儲(chǔ)存任何數(shù)據(jù)類型的Python對(duì)象,以及任何用戶定義類的實(shí)例。

ZIP

***一個(gè)技巧也非常酷。你是否曾想要讓兩個(gè)列表中的元素逐個(gè)映射,組合成字典?那么你應(yīng)該使用zip。

 
 
 
  1. keys = ['a', 'b', 'c'] 
  2. vals = [1, 2, 3] 
  3. zipped = dict(zip(keys, vals)) 

內(nèi)置函數(shù)zip()接收若干可迭代對(duì)象,然后返回一個(gè)由多個(gè)元組組成的列表。每個(gè)元組根據(jù)輸入對(duì)象的位置索引對(duì)其元素進(jìn)行分組。還可以使用*zip()來(lái)“解壓”對(duì)象。

python大法好,掌握這些小的技巧,助你在python大神的道路上,披荊斬棘,所向披靡。


文章標(biāo)題:你與數(shù)據(jù)科學(xué)家只差這26條Python技巧
文章轉(zhuǎn)載:http://www.dlmjj.cn/article/djogpde.html