本系列來自學習轉載廖雪峯的官方網站python
1. python簡介:解釋性語言算法
安裝python,注意路徑加入path數組
python的解釋器,cpython,Python的解釋器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是經過網絡調用來交互,確保各程序之間的獨立性。網絡
2.命令行模式和python交互模式app
Python的交互模式和直接運行.py
文件有什麼區別呢?編輯器
直接輸入python
進入交互模式,至關於啓動了Python解釋器,可是等待你一行一行地輸入源代碼,每輸入一行就執行一行。函數
直接運行.py
文件至關於啓動了Python解釋器,而後一次性把.py
文件的源代碼給執行了,你是沒有機會以交互的方式輸入源代碼的。學習
用Python開發程序,徹底能夠一邊在文本編輯器裏寫代碼,一邊開一個交互式命令窗口,在寫代碼的過程當中,把部分代碼粘到命令行去驗證,事半功倍!前提是得有個27'的超大顯示器!網站
shift+enter 在交互模式中,能夠避免執行而進行換行ui
1).直接運行python文件
在Windows上是不行的,可是,在Mac和Linux上是能夠的,方法是在.py文件的第一行加上一個特殊的註釋:(使用的是python3.6)
#!/usr/bin/env python3
print('hello, world')
而後,經過命令給hello.py以執行權限:
$ chmod a+x hello.py
3.輸入和輸出
print()
print()
函數也能夠接受多個字符串,用逗號「,」隔開,就能夠連成一串輸出:
print(100+200)
300
Python解釋器自動計算出結果300
input()
變量 = input()
python中的變量
4.python的基礎
python的語法縮進,堅持使用4個空格的縮進,複製粘貼的代碼必須檢查縮進。
類型:整數,浮點數,字符串,布爾型,列表,字典
字符串:「」或‘’括起來的文本,注意轉移字符/,轉義字符\
能夠轉義不少字符,好比\n
表示換行,\t
表示製表符,字符\
自己也要轉義,因此\\
表示的字符就是\
。Python還容許用r''
表示''
內部的字符串默認不轉義
Python容許用'''...'''
的格式表示多行內容
字符串編碼:
ASCII,Unicode,utf-8。注意編碼方式的大小
堅持統一使用utf-8編碼
encode()指定編碼方式
decode()指定解碼方式
格式化:佔位符
你可能猜到了,%
運算符就是用來格式化字符串的。在字符串內部,%s
表示用字符串替換,%d
表示用整數替換,有幾個%?
佔位符,後面就跟幾個變量或者值,順序要對應好。若是隻有一個%?
,括號能夠省略。
常見的佔位符有:
格式化整數和浮點數還能夠指定是否補0和整數與小數的位數:
print('%2d-%02d' % (3, 1)) print('%.2f' % 3.1415926) 3-01 3.14
format()
另外一種格式化字符串的方法是使用字符串的format()
方法,它會用傳入的參數依次替換字符串內的佔位符{0}
、{1}
……,不過這種方式寫起來比%要麻煩得多:
'Hello, {0}, 成績提高了 {1:.1f}%'.format('小明', 17.125) 'Hello, 小明, 成績提高了 17.1%'
變量和常量
變量的命名規則
常量默認大寫字母標識,除法 / 表示精確的除法,//表示地板除,只取整數部分。%取餘。
list和tuple
list = []
下標 (0,n-1),(-1,-n)
append()添加元素
insert(i,A),在下標i處插入A
pop(1,A),刪除i處的元素A
元素賦值,list的元素能夠是另外一個list.
tuple() 元組 不可變
條件判斷
if
elif
else
循環:
for i in ...
range(n) 生成0,n-1的list
while
break,continue的應用
dict和set
判斷key是否在字典中
一是經過in
判斷key是否存在:
>>> 'Thomas' in d False
二是經過dict提供的get()
方法,若是key不存在,能夠返回None
,或者本身指定的value:
>>> d.get('Thomas') >>> d.get('Thomas', -1) -1
注意:返回None
的時候Python的交互環境不顯示結果。
要刪除一個key,用pop(key)
方法,對應的value也會從dict中刪除:
>>> d.pop('Bob') 75 >>> d {'Michael': 95, 'Tracy': 85}
請務必注意,dict內部存放的順序和key放入的順序是沒有關係的。
dict能夠用在須要高速查找的不少地方,在Python代碼中幾乎無處不在,正確使用dict很是重要,須要牢記的第一條就是dict的key必須是不可變對象。
這是由於dict根據key來計算value的存儲位置,若是每次計算相同的key得出的結果不一樣,那dict內部就徹底混亂了。這個經過key計算位置的算法稱爲哈希算法(Hash)。
哈希函數在一個給定的鍵上執行,返回其在數組中的相對位置,使用一種哈希策略的數組叫作哈希表。
較小的裝載因子,數組長度爲素數均可以減少衝突 ,例子
def keyToIndexes(keys,n):
return list(map(lambda key : key%n,keys))
要保證hash的正確性,做爲key的對象就不能變。在Python中,字符串、整數等都是不可變的,所以,能夠放心地做爲key。而list是可變的,就不能做爲key:
set
set能夠當作數學意義上的無序和無重複元素的集合,所以,兩個set能夠作數學意義上的交集、並集等操做,
在議不可變對象:
對於不變對象來講,調用對象自身的任意方法,也不會改變該對象自身的內容。相反,這些方法會建立新的對象並返回,這樣,就保證了不可變對象自己永遠是不可變的