機器學習中最經常使用最流行的語言工具現階段應該是Python, 這篇文章主要介紹一些經常使用的Python語法知識。本篇博文適合那些有其餘語言基礎的程序員們,若是一點基礎都沒有,我建議先跳過。博主之前是作移動端開發的,因此本篇文章主要是爲那些準備知識提高或者轉行的程序員們準備的,可讓大家以最快的速度進入到Python的開發環境。python
好了,首先在正式介紹Python的開發以前,你們都知道須要配置開發環境和IDE. 這裏我介紹一下我經常使用的,叫作Anaconda, 你們能夠自行下載,下載事後不用另外配置Python的環境了,由於她已經幫我們配置好了。下載地址:https://www.anaconda.com/ , 下載事後,你之後天天都須要打開和操做的就是這個圖片啦,至少全部DataScience和機器學習的工具這裏基本都有。以下圖程序員
開發Python經常使用的編輯器是Spyder和Jupyter Notebook. 可是由於學校老師教的是Spyder, 這裏以及之後的機器學習我都選擇Spyder啦(懶懶懶)。至於在學習過程當中,不斷的須要下載相關庫的話,就點擊上圖左上角的Environment,而後本身慢慢去搜,慢慢去找哈,這不是本博客的重點。好了,下面介紹Python的知識點啦。express
1. 變量數據結構
和其餘語言一個很明顯的區別是,Python的變量是不須要預先定義類型的。這個很牛逼吧,你可能要問,那她是怎麼分配內存空間的呢?這個。。。。。。。。。我就不說了(實際上是不知道,哈哈哈哈),單這應該是Python動態分配內存的機制。app
例如,我們能夠直接寫 a = 10, 而不須要跟Java或者OC 中那樣寫 int a = 10. So cool, is it?機器學習
2. Operations編輯器
顧名思義,Python和任何其餘語言同樣,都有加減乘除,取模,取餘數等等算數運算。直接看下面的example更加直觀。函數
var01 = 10 var02 = 15.5 plus = var01+var02 minus = var01-var02 multiply = var01*var02 divid = var01/var02#這裏直接給的就是浮點數的結果,而不像其餘語言那樣只取結果中的整數部分 mod = var01%var02
這裏基本和其餘的語言同樣,只有一些細節不一樣,例如除法運算,Python直接返回的是浮點型的最終結果,這比其餘語言要方便的多。工具
3. Swap(交換變量值)學習
你們在學習任何一種語言的時候,我拿我英俊瀟灑的面容跟大家打賭,大家必定寫過2個變量值交換的代碼,並且大家交換值的思路都是定義一箇中間變量,而後交換。(別問我怎麼知道,我也是從這條路上面走過來的。。。。。。。)。咱們之前的思路僞代碼以下:temp = a;
a = b;
b = temp;
是否是又被我猜到了,娃哈哈哈哈哈哈哈哈。 可是!!!!!!!自從咱們有了Python,咱們就不須要這麼麻煩了,直接一行代碼搞定,看下面
a = 1 b = 2 a,b = b,a
上面第三行,直接交換a, b的值。我就問你服不服?????
4. 函數定義
學過任何一個語言的人都應該知道函數的重要性,咱直接上代碼,看看通常函數的定義和格式,而後我在細細解釋一些小細節哈。。。
def least_difference(a,b,c): """ Return the smallest difference between any two numbers among a,b,c """ diff1 = abs(a-b) diff2 = abs(a-c) diff3 = abs(b-c) return min(diff1,diff2,diff3)
首先定義函數的格式是:
def function_name (args):
"""
函數註釋區, 將函數註釋放在這裏。語法中雖然沒有特別要求,可是是一個很好的習慣
""" function_body
這裏須要記住一個小細節,Python中的indent(縮進)不能省略,不然編譯器會報錯。而在其餘幾乎全部的主流語言中都不存在這個問題的,只要是新的一行,管你縮進幾個空格符呢。 第二點這裏有個細節就是Python中函數的註釋規則, 通常將這個函數的註釋都寫在上面的函數註釋區間,爲何這麼作呢???其實你不作也不影響代碼運行,可是你的項目組長或者項目經理估計得找你談談了。哈哈。 其實寫在這還有一個做用,就是在調用help(函數名)是,能將該這一塊的註釋返回並打印出來,這在寫一些公用組件或者API是就顯得尤其重要了。例如
help(least_difference)
調用上面一行代碼後,回返回並打印下面這一句話
Return the smallest difference between any two numbers among a,b,c
是否是很酷,瞬間感受本身能寫API 了。
5. 條件表達(conditional expression)
Python中的條件表達,如if-else表達基本跟Java等主流語言是一致的,可是就三目運算符這一塊有一點不同. 在Python中三目運算符以下所示
outcome = True if grade > 60 else False #ternary operator
6. List
6.1 List 的建立
List幾乎是咱們平常中用的評率很是高的一種數據結構。Python中的list的牛逼之處在於,她能夠將不一樣數據類型的元素裝進同一個list。list的建立以下所示
numbers = [1,2,3,4] planets = ['a','b','c','d'] mix = [1,'a',2,'b']#different data types hands = [ ['J', 'Q', 'K'], ['2', '2', '2'], ['6', 'A', 'K'] # (Comma after the last element is optional) ]
6.2 List的index
在Python中,list的index也是zero-index,意思就是從零開始。可是Python的不一樣之處就在於,她的index,TMD可以使負數,對!!!是負數,是否是感受顛覆了之前對於List的認知。可是在Python中,index是負數表明的是從末尾元素開始index的。例如:-1表明最後一個元素的index,-2表明倒數第二個元素,以此類推。具體代碼示例看下面
print(numbers[0])#result is 1 print(numbers[-1])#result is 4 print(numbers[-2])#result is 3
6.3 slicing
在Python中,不管是Python中的List數據結構,仍是後面要學的numpy中的ndarray, slicing都是常常要用到的。 Slicing這個單詞若是直譯過來的意思就是切割(你也能夠理解爲切糕,哈哈哈),就是從一塊大的切糕中切一小段給你。在Python的List中,slicing的意思是指在List中切出一段出來。這裏的slicing的運用很是靈活,我列舉了下面的幾種方式。另外slicing取值範圍也是包頭不包尾的。
print(planets[:3])#from index-0(include) to index-3(exclude) print(planets[1:])#from index-1(include) to the last element(include last element) print(planets[0:3]) print(planets[-2:-1])#from the last second element(include) to the last element(exclude) print(planets[-2:])#from the last second element(include) to the last element(include)
6.4 List經常使用的method(functions)
因爲list是mutable的,是能夠修改的,因此她的method很是靈活且都。這跟咱們後面說的一個另一種數據結構Tuples有很大的區別。經常使用list的method包括有append, pop,len,index等等,具體有無數種method,大家能夠自行去查詢API,下面列舉了一些經常使用的方法供參考。
planets.append('e')#add a element and place it at the last position len(planets)#return the length of the list planets.pop()#return and remove the last element from the list planets.index('c')#return the index of the element "c"
總結:以上是一些快速入門Python的第一部分,是最基礎的部分,學習要求有其餘開發語言的相關經驗或者知識儲備。上面這些最基礎的部分有Python開發環境配置,變量,函數定義,List等。下一節繼續擴展一下Python中循環,dictionary,Tuples等相關內容。革命已經完成了一小步,同志們仍需努力纔是啊。。。哈哈