庫的匯入和新增
在機器學習和人工智慧為主導的工業4.0時代,python猶如一股龍捲風襲捲著一切。python作為一門解釋性的物件導向的語言雖然在運算速度上有不足,但是相比於程式運算速度,程式專案開發速度更為重要,而且在在這個裝備氪金時代,運算速度的缺憾完全可以拿硬體來補,何況python還支援並行多執行緒開發。python之所以在專案開發速度方面獨樹一幟,在於它的開源思想和活躍的社群,在網路爬蟲、科學計算、機器學習和生物資訊等諸多領域都有大量成熟、穩健的模組,這些造好的『輪子』省去了大量的開發時間,讓我們在接到專案時可以在極短的時間內完成架構,快速解決問題。
其實,這不是問題,無論python2還是python3對於初學者來說差別不大,但是須知python3在效能上做了優化,更加規範化了某些用法,支援python3的模組日益增多,python3可謂勢在必行,所以這裡還是強烈推薦大家按照python3的語法來學習。
不僅是python,大多數語言的執行方式一般包括兩種,互動式執行和接受指令碼執行。
所謂互動式,即進入python終端,所鍵即所得,這種好處對於初學者來說甚好,便於直觀理解各個函式的語法、功能。尤其推薦大家使用ipython,可以帶來更好的互動式體驗。另外一種是通過執行寫好的指令碼,這種是真正的生產環境下的執行方式,但是在執行之前需要大量測試,避免各種報錯和隱藏的bug,這裡推薦大家使用python專門的開發編輯器pycharm。
print
('hello word!'
)a =1+
1#這是單行注釋,=是賦值操作,表示將右邊的表示式結果賦值給變數a;符號兩邊加上空格以增加可閱讀性
'''多行注釋
3個單/雙引號開頭和結尾
'''a =
2a *
2a **
2# 多重賦值
a, b, c =1,
2,'a''''
上述命令相當於:
a = 1
b = 2
c = 'a'
'''# 字串操作
s ='i like python'
s +'very much!'
#將s與字串拼接,中間以單個空格連線
$ i like python very much
s.split(
' ')
#將s以單個空格符切割,得到列表
$ ['i'
,'like'
,'python'
]# 判斷語句
if 條件1
: 執行體1
elif 條件2
: 執行體2
else
: 最後的執行體
'''python一般不用花括號{},也沒有end語句,他是用縮排對齊作為語句的層次標記。同一層次的縮排量要嚴格的一一對應,否則報錯。如下語句是錯誤的。
'''if a ==1:
print
(a)#縮排2個空格
else
:print
('不等於1'
)#縮排3個空格
'''個人理解,這種語法規範簡潔而典雅,非常符合python的思想。其他的語言往往通過關鍵字來標註語法結構,但是隨著巢狀的層次增加,關鍵字也難以直觀的顯示語法結構,這個時候也須借助於縮排,所以python乾脆去掉這些語句內部的標誌性詞,用更為嚴格的縮進來表示,實在是簡潔而又典
'''# 迴圈語句
s, k =
0while k <
101:
#判斷k是否滿足小於101,不滿足則跳出迴圈
k = k +
1#從k=0開始每迴圈1次加1
s = s + k #s累加k的和即1+2+3...
print
(s)$ 5050
s =0
for k in
range
(101):
#in判斷某個元素是否在乙個集合內;range生成乙個序列,一般為range(a,b,c),表示生成乙個首相為a,公差為c且不超過b-1的等差數列。
s = s + k
print
(s)$ 5050
# 函式
# python用def來自定義函式
defadd2num
(x, y)
:#定義函式,同時定義2個引數
return
(x + y)
#return返回函式值
print
(add2num(1,
2))#呼叫函式
$ 3# 與一般函式不同的是python函式返回值可以是各種形式,例如列表(list)甚至返回多個值。
defadd2num
(x=0
, y=0)
:return
([x+
1, y+1]
)#返回值是乙個列表
defadd3
(x, y)
:return
(x+3
, y+3)
#雙重返回
a, b = add3(1,
2)# lambda:匿名函式
# 對於定義add2num這樣簡單的函式,通過def需要正式命名、計算和返值顯得過於麻煩,此時lambda函式橫空而出
f =lambda x, y : x + y #定義函式f(x,y)=x+yf(1
,1)#呼叫函式
$ 2
python有4個內建的資料結構(即儲存資料的容器),容器裡不要求元素型別一致:
列表(lsit):如l = [1, 2, 3],可索引可變
元組(tuple):如t = (1, 2, 3),可索引不可變
字典(dictionary):如d[『***』] = 『male』,以有意義的鍵名(key)為索引,無序
集合:如s = ,唯
一、無序,不可索引
列表可以修改,元組相對固定,不能修改。例如上述列表l[0] = 『a』,即將列表l第乙個元素1修改為』a』,這裡注意兩點:
(1)python索引是從0開始,即第乙個元素索引(index)是0
(2)列表是原地修改
如想複製列表需要通過copy = l[:],而通過copy = l只是重新貼了乙個標籤,修改copy仍然會讓原始l改變,即所謂的假拷貝。
list/tuple函式可將物件變成列表/元素型別,例如tuple([1, 2])是(1,2)
列表/元組相關函式
函式功能
len(a)
列表/元組元素個數
max(a)
返回列表/元組最大值
min(a)
返回最小值
sum(a)
求和sorted(a)
公升序排序
cmp(a,b)
比較2個列表/元組的元素
此外,作為物件,列表本身有很多方法,元組不允許修改因此方法很少
函式功能
將1新增到列表a末尾
a.count(1)
列表a中元素1出現的次數
a.extend([1,2])
將列表[1,2]內容追加到列表a末尾
a.index(1)
從列表a中找出第乙個1的索引位置
a.insert(2,1)
將1插入列表a索引為2的位置
a.pop(1)
移除列表a索引為1的元素
列表解析:
對於列表a = [1, 2, 3]
每個元素加1可這樣寫:
[i +1 for i in a ]
返回[2, 3, 4]
像list/tuple都是以元素位置為索引的,如果存貯的資料過大,通過這種方式迭代查詢的效率勢必十分低下,因此有了字典。字典的好處在於通過dic[key] = value的形式將鍵值對聯絡起來,通過相應的key就能找到對應的值,類似於查字典一樣,將十分高效。
建立字典的方法:
(1)dic[『key』]=『v』 #需先宣告dic是字典:dic=dict()
(2)d= #冒號聯絡鍵值對,逗號隔開每個元素
(3)dict.fromkeys([『key』,『age』],20) #相當於
取值方法:
dic[『key』]
$ 『v』
python中的集合與數學上的集合概念基本一致,元素唯
一、無序,不支援索引。
set([1, 2, 3]) #將列表轉化成集合
集合可以進行一些運算:
t | s #集合t和s的並集
t & s #t和s的交集
t - s #求差集,項在t中不在s中
t ^ s #對稱差集(項在t或s中,但不會同時出現在二者中)
python之所以強大就是因為有很多庫,例如數學相關庫math庫,通過import關鍵字匯入
import math
math.pi #內建圓周率常數
math.exp(1)
#計算指數
math.sin(1)
#計算正弦
# 匯入時給庫起乙個別名
import math as m
m.pi
# 指定庫中函式匯入(節省記憶體資源,也避免命名衝突)
from math import exp as e #只匯入math庫中的exp函式,取名ee(1
)# 通過help('modules')檢視庫的幫助
三分鐘搞定JS繼承
基本思想 通過改變prototype的指向形成例項和原型之間的原型鏈 instancesub subtype.prototype instancesuper supertype.prototype object.prototype null 子物件的原型是父物件的例項subtype.prototyp...
沉默三分鐘
網上見此真情之文,藉以自表 原文 http www.hecaitou.net p 3018 沉默三分鐘是心祭。那麼多年了,國旗終於為平民而降。那麼多天了,全民哀悼終於實現。與此同時,火炬停止傳遞,因為這不是乙個歡慶的時刻。很多年後回顧2008年,我 也許寧可它從日曆中消失。還沒有哪一年和今年一樣,才...
三分鐘搞定Python中的裝飾器
python的裝飾器是python的特色高階功能之一,言簡意賅得說,其作用是在不改變其原有函式和類的定義的基礎上,給他們增添新的功能。裝飾器存在的意義是什麼呢?我們知道,在python中函式可以呼叫,類可以繼承,為何要必須保證不改變函式和類的定義,就使得函式有了新的功能呢?其實很好解釋。提高 的簡潔...