參考教程:菜鳥教程html
https://www.runoob.com/python3/python3-tutorial.htmlpython
使用的開發工具是Jupyter Notebook(Anaconda)編程
下面我主要是介紹一些須要注意的點和練習過程:數據結構
說在前面:動手很重要函數
1.標識符規則:工具
在 Python 裏,標識符由字母、數字、下劃線組成。開發工具
在 Python 中,全部標識符能夠包括英文、數字以及下劃線(_),但不能以數字開頭。測試
Python 中的標識符是區分大小寫的。spa
注意:3d
如下劃線開頭的標識符是有特殊意義的。
以單下劃線開頭 _foo 的表明不能直接訪問的類屬性,需經過類提供的接口進行訪問,不能用 from xxx import * 而導入。
以雙下劃線開頭的 __foo 表明類的私有成員,以雙下劃線開頭和結尾的 __foo__ 表明 Python 裏特殊方法專用的標識,如 __init__() 表明類的構造函數。
2.行和縮進
python中的代碼塊不適應大括號{ } 來控制類、函數以及其餘邏輯判斷。python對縮進是很敏感的,它經過縮進來判斷函數或者模塊。
if True: print("true") else: print("false")
若出現: IndentationError: unindent does not match any outer indentation level錯誤代表是縮進錯誤
3.多行語句在行尾使用 \ 來接下一行
句中包含 [], {} 或 () 括號就不須要使用多行鏈接符。
4.字符串表示 ‘’,「」,「「「,三引號能夠由多行組成。單行註釋用 # 多行註釋用三個單引號或三個雙引號。
5.input、print表示輸入、輸出,python中的命令-h能夠查看各參數的幫助信息。
6.import 與 from...import
1.變量賦值
Python中變量名賦值不須要進行類型聲明,變量名也不須要提早建立,變量賦值之後纔會被建立(這一點和R語言相似)
2.多變量賦值
能夠同時給三個變量賦相同的值,也能夠將三個變量同時分別賦值。
3.標準數據類型
Python中有五個標準數據類型:Numbers(數字)、String(字符串)、List(列表)、Tuple(元組)、Dictionary(字典)
詳細內容看下面的第九條
用於存儲數據
1.Number數字
Python3 支持 int、float、bool、complex(複數)。
(1)內置的 type() 函數能夠用來查詢變量所指的對象類型。
(2)此外還能夠用 isinstance 來判斷
(1)(2)的區別在於:
(3)Python3 中,把 True 和 False 定義成關鍵字了,但它們的值仍是 1 和 0,它們能夠和數字相加。
(4)del語句能夠刪除一些對象引用。也能夠刪除單個或多個對象。
(5)Python還支持複數,複數由實數部分和虛數部分構成,能夠用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型。
2.字符串
Python中的字符串用單引號 ' 或雙引號 " 括起來,同時使用反斜槓 \ 轉義特殊字符。
(1)字符串截取:
變量[頭下標:尾下標],字符串第一個字符索引是0;
從左往右以0開始,從右往左以-1開始。
(2)字符串操做
注意不能使用索引來改變字符串內的字符。
(3)對轉義字符的說明
反斜槓(\)轉義特殊字符,若是你不想讓反斜槓發生轉義,能夠在字符串前面添加一個 r,表示原始字符串:
3.列表List(Python內還有一些對列表操做的函數)
(1)列表是寫在方括號 [] 之間、用逗號分隔開的元素列表, 列表中元素的類型能夠不相同。
(2)列表中元素的截取
①當只截取一個時,返回值是這個元素;當截取多個時,返回的是一個新的列表。
②注意選取範圍是左閉右開區間
索引值以 0 爲開始值,-1 爲從末尾的開始位置。
能夠直接經過索引來更改列表內元素,也能夠經過列表內置方法來更改。
③注意:
list能夠用+進行拼接
和字符串同樣,list能夠被索引和切片
python截取列表數據時,能夠接收第三個參數,實現按步數截取。
當第三個參數爲負數時逆向讀取,能夠用來翻轉字符串。
4.元組Tuple
(1)特色:操做元組與列表相似,不一樣之處在於,元組內的元組不能修改,元組寫在小括號()裏,元組之間用逗號隔開,元組內的元組類型也能夠不一樣。元組之間也能夠經過+直接合並。
(2)雖然tuple的元素不可變,可是他能夠包含可變的對象,好比說list列表。
(3)特別注意:構造包含0或1個元素的元組有着特殊的語法規則
5.集合set
是由一個或數個形態萬千的大小總體組成的,構成集合的事物或對象稱做元素或是成員。
基本功能是進行成員關係測試和刪除重複元素。set裏的內容位置是隨意的,因此不能用索引列出
(1)set的建立
①可使用大括號{}或者set()函數來建立
②在用set函數的時候,注意,set函數最多隻能接收一個參數
那麼怎樣用它來建立含有多個元素的集合呢?
向set函數的參數裏,傳入含有多個元素的列表或元組都可;若是隻傳入一個字符串,他會將字符串拆成一個個的字符,那麼建立的集合就全是一個個的字母的集合啦
③空的集合必須經過set()函數來建立;{}是用來建立空的字典的。
(2)集合之間能夠進行運算,差、交、並、補等
(3)set的使用:
①去重,set自動完成
②判斷元素是否在集合中
6.字典dictionary(具體字典內置函數,能夠百度一下)
列表是有序的對象集合,字典是無序的對象集合。二者之間的區別在於:字典當中的元素是經過鍵來存取的,而不是經過偏移存取。
(1)字典的實質:字典是一種映射類型,字典用 { } 標識,它是一個無序的 鍵(key) : 值(value) 的集合。
(2)注意: 鍵(key)必須使用不可變類型, 在同一個字典中,鍵(key)必須是惟一的。
(3)建立字典:三種方式對比
建立空字典用{}。
(4)對字典的讀取操做
7.Python數據轉換
下面介紹幾個內置函數能夠執行數據類型之間轉換,這些函數返回一個新的對象值,表示轉換的值。
函數 |
描述 |
int(x) |
將x轉化爲一個整數 |
float(x) |
將x轉化爲浮點數 |
comlext(real,imag) |
建立複數 |
str(x) |
將對象x轉化爲字符串 |
repe(x) |
將對象x轉化爲表達式字符串 |
tuple(s) |
將序列s轉化爲元組 |
list(s) |
將序列s轉化爲列表 |
set(s) |
將s轉化爲可變集合 |
frozenset(s) |
轉化爲不可變集合 |
dict(d) |
將d轉化爲字典;d必須是一個(key,value)的元組序列 |
chr(x) |
將一個整數轉化爲字符 |
ord(x) |
將一個字符轉化爲整數 |
hex(x) |
將x轉化爲16進制形式字符串 |
oct(x) |
轉化爲八進制形式字符串 |
如今Python的集成開發工具多種多樣,我如今使用的是Jupyter notebook,網頁版,高效方便。
也可使用python自帶的IDE,有腳本編程和交互式編程兩種。
還有pycharm、Ipython等工具都很方便。
1.算術運算符
運算符 | 描述 |
+,-,*,/ |
加減乘除 |
% |
取模,返回除法的餘數 |
x**y |
返回x的y次方結果 |
// |
向下取接近除數的整數,9//2=4;-5//2=-3;獲得的是更小的整數 |
2.比較運算符(返回的是真值)
運算符 |
描述 |
==、!= |
等於、不等 |
>、<、>=、<= |
大於、小於、大於等於、小於等於 |
3.賦值運算符
運算符 |
描述 |
= |
簡單賦值符 c = a + b 將 a + b 的運算結果賦值爲 c |
+=、-=、*=、/= |
加減乘除賦值符 c += a 等效於 c = c + a |
%= |
取模賦值符 c %= a 等效於 c = c % a |
**= |
冪賦值符 c **= a 等效於 c = c ** a |
//= |
取整除賦值符 c //= a 等效於 c = c// a |
:= |
海象運算符(和R語言中的有點相似) 可在表達式內部爲變量賦值。 |
4.位運算符
運算符 |
描述 |
& |
按位與運算符:參與運算的兩個值,若是兩個相應位都爲1,則該位的結果爲1,不然爲0 |
| |
按位或運算符:只要對應的二個二進位有一個爲1時,結果位就爲1。 |
^ |
按位異或運算符:當兩對應的二進位相異時,結果爲1 |
~ |
按位取反運算符:對數據的每一個二進制位取反,即把1變爲0,把0變爲1。~x 相似於 -x-1 |
<< |
左移動運算符:運算數的各二進位所有左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。 |
>> |
右移動運算符:把">>"左邊的運算數的各二進位所有右移若干位,">>"右邊的數指定移動的位數 |
5.邏輯運算符(看X的真值)
運算符 |
描述 |
and |
與運算符:若是x爲False,x and y 返回 False,不然返回y的計算值 |
or |
或運算符:若是x是True,返回x的值,不然返回y的值 |
not |
非運算符,若是x爲True,則返回False,不然返回True |
6.成員運算符
in、not in
7.身份運算符(判斷)
is 判斷兩個標識符是否引用自同一個對象
is not 判斷兩個標識符是否引自不一樣的對象
8.Python運算符的優先級
"**" > "~ +@ -@" > "*/%//" > "+-" > "<< >>"
注意:python3已經不支持<>(不等)運算符,被!=替代了。
1.if判斷
(1)小例子:
(2)if嵌套
if 表達式1: 語句 if 表達式2: 語句 elif 表達式3: 語句 else: 語句 elif 表達式4: 語句 else: 語句
1.while循環語句
while(condition): statement
例子:
當條件永真時,會無限循環
當條件不成立時跳出循環,也能夠用break來終止循環
2.for循環語句
(1)通常格式
for var in sequence: statemnet1 else: statement2
(2)小例子(range函數也能夠指定步數,默認是整數 1)
3.continue關鍵字
從例子中就能夠看出,continue是執行到該語句時,下面的語句再也不執行,繼續執行下一個循環過程。
1.迭代器: 能夠記住遍歷的位置的對象。
迭代是Python最強大的功能之一,是訪問集合元素的一種方式。
迭代器有兩個基本的方法:iter() 和 next()。
(1)使用Python內置迭代器
例子:
(2)迭代
(3)對自定義的類使用迭代器
把一個類做爲一個迭代器使用須要在類中實現兩個方法:__iter__(),__next__() ※注意是雙下劃線!!!!
① __iter__() 方法返回一個特殊的迭代器對象, 這個迭代器對象實現了 __next__() 方法並經過觸發 StopIteration 異常標識迭代的完成(目的就是識別循環結束的狀況,防止出現無限循環的狀況)。
② __next__() 方法會返回下一個迭代器對象。
③小例子:
更加合理的指定迭代範圍的方式:
2.生成器generator:生成器就是一個迭代器
(1)定義:使用了yield的函數被稱爲生成器
調用一個生成器函數,返回的是一個迭代器對象。
(2)生成器的工做流程:
在調用生成器運行的過程當中,每次遇到 yield 時函數會暫停並保存當前全部的運行信息,返回 yield 的值(至關於一個斷點), 並在下一次執行 next() 方法時從當前位置繼續運行。
小例子:使用yield實現斐波那契數列:
1.定義一個函數
函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括號 ()。
任何傳入參數和自變量必須放在圓括號中間,圓括號之間能夠用於定義參數。
函數內容以冒號起始,而且縮進。
return [表達式] 語句用於退出函數,選擇性地向調用方返回一個表達式。不帶參數值的return語句返回None。
2.調用函數
直接使用函數標識符(加須要傳遞的參數)進行調用
3.參數傳遞
(1)明確一下Python裏的可更改和不可更改對象
string、tuple、number都是不可更改對象;而list、dict是可更改對象
下面的概念好好理解:
不可變類型: 變量賦值 a=5 後再賦值 a=10,這裏實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,至關於新生成了a。
可變類型: 變量賦值 la=[1,2,3,4] 後再賦值 la[2]=5 則是將 list la 的第三個元素值更改,自己la沒有動,只是其內部的一部分值被修改了。
(2)對於不可變類型、可變類型對象在調用函數中做爲參數傳遞:
不可變類型( string、tuple、number等):相似於C++的值傳遞;如func(a),a傳入的只是a的值,並不影響原來a對象自己。好比在函數內部對a的值改變,改變的只是這個對象的複製對象,對象a自己是不變的。
可變類型(list、dict等):相似於C++的引用傳遞,如func(la),la傳入的是這個對象自己,函數內部對這個對象修改後,外部的對象是會被改變的。
4.參數類型
調用參數時可以使用的正式參數類型:
必需參數、關鍵字參數、默認參數、不定長參數
(1)必需參數: 必需參數須以正確的順序傳入函數。調用時的數量必須和聲明時的同樣。
(2)關鍵字參數: 使用關鍵字參數容許函數調用時參數的順序與聲明時不一致,由於 Python 解釋器可以用參數名匹配參數值。
例:
(3)默認參數
調用函數時,若是沒有傳遞參數,則會使用默認參數。如下實例中若是沒有傳入 age 參數,則使用默認值:
接上面例子:
(4)不定長參數
你可能須要一個函數能處理比當初聲明時更多的參數。
①第一種形式:使用加*的參數,表示輸入一個元組,這個元組的長度是不定的,由調用函數時,自動讀取。
例:
②第二種形式:使用加**的參數,表示輸入形式爲字典形式,長度不定
例:
5.匿名函數
python 使用 lambda 來建立匿名函數。 lambda的主體是一個表達式,而不是一個代碼塊。
所謂匿名,意即再也不使用 def 語句這樣標準的形式定義一個函數。
lambda 函數擁有本身的命名空間,且不能訪問本身參數列表以外或全局命名空間裏的參數。
(1)語法:注意寫lambda表達式時參數部分不要加 [ ] 這個符號只是表明能夠省略 ,否則會報錯
(2)例:
能夠看出,也能夠不指定參數
1.列表
2.列表——>堆棧
3. 元組和序列
4.集合
5.字典