最近整理了一些Python基礎教程,像數據分析、數據類型、字符串、正則表達式以及最新版Python3.8安裝程序,很多小伙伴都反映不錯,也都領取了相應學習資料。今天咱們就來整理一些干貨,帶大家由淺及深的剖析一下最近的學習教程。
1、Python的兩種編程方式:交互式(隨輸隨運行)和文件式(主要方式;批量運行出結果)
2、一切皆對象,每個對象由標識(id)、類型(type)和值(print)標識。
3、Python采用基于值的內存管理,不同變量賦值為同一個值,ID一樣,但是只適用范圍在-5至256的整數和短字符串。
4、內置函數(BIF),68個,查看方式:dir(builtins)
分類:
數值數據類型:int,float,complex,bool,decimal,fractions
序列數據類型:字符串(string)、列表(list)、元祖(tuple)、bytes、bytearray
集合數據類型:set、frozenset
字典數據類型:dict
不可變的數據類型:數值Number、字符串String、元祖Tuple
可變的數據類型:列表List、字典Dict、集合Set
5.
二進制:0b/0B開頭
八進制:0o/0O開頭
十六進制;0x/0X開頭
6、
數值運算函數:
abs(x):絕對值 ;divmod(x,y):商余 ;pow(x,y,z):冪余((x**y)%z) ;round(x,d):四舍五入d位 ;max/min ; int(x) /float(x) /complex(x)
7、
math庫:
常數:math.pi ;math.fabs(x):絕對值 ;math.fmod(x,y):x%y ;math.ceil(x):向上取整,返回不小于x的最小整數 ;math.floor(x):向下取整,返回不大于x的最大整數 ;math.modf(x):返回x的小數和整數部分 ;math.trunc(x):返回x的整數部分
8、
浮點數類型:0.1 + 0.2不等于 0.3 ,浮點數有小尾數。看是否等于可以用round函數幫助去小尾數。
9、類型間混合運算:
整數 -> 浮點數 -> 復數
10、布爾數據類型(bool)包含兩個值->True(真–1)或假(False–0)。
如果表達式的結果為數值類型的0、空字符串(“”)、空元祖、空列表[]、空字典{},則其布爾值為false(假),否則為true(真)。
11、邏輯運算符:and、or、not
a and b等于a if not a else b ; a or b 等于a if a else b。
not一定會返回true或false;and和or不一定。
12、運算優先級(由高到低)
**(指數)> +x.-x(正負號)> *./.%(乘。除。取余)> +. -(加。減)> &(與)> ^(或)> \(非)>比較大小> not(非)> and(與)>or(或)> lambda表達式
13、序列型數據
(1)序列的索引s[i]:如果索引下標越界,導致IndexError;如果索引下標不是整數,導致TypeError。
(2)序列的切片(截取序列s的一部分):顧頭不顧尾。
(3)序列的加:x + y:連接兩個序列; 序列的乘(復制):x * n:復制n次序列x ;
(4)判斷子串:x in s :返回True/False ; s.count(x):返回x在s中出現的次數 ; s.index(x,i,j):返回x在s(范圍[i,j])中第一次出現的索引位置。
(5)序列的排序:sorted(s, key=None,reverse=False)。reverse為false是為升序,為true時為倒序。返回結果為一個列表。
(6)序列的拆封賦值:當變量個數和序列長度相等時,一一對應賦值。如a,b = (1,2)即a = 1,b = 2。不等則導致ValueError。或使用變量(將多個值作為整體賦給變量)或使用臨時變量‘_’
14、字符串類型
比較字符ASCII碼值的大小:空格<數字<大寫字母<小寫字母
Unicode變字符:chr(u) ;字符變Unicode:ord(x)
format方法的格式控制:
(1)槽{序號}的使用
(2){參數序號:格式控制標記},格式控制標記包括:填充、對齊(分別用<、>、^表示左、 右和居中對齊)、寬度、精度、類型(b=二進制,c=Unicode,d=十進制,o=八進制,xX=十六 進制)。
字符串的類型判斷:
str.isdigit是否全為數字(0-9);str.isalpha是否全為字母;str.isal num是否全為數字或字母;str.isspace是否是空白(空格、制表符、換行符等);str.isprintable是否可打印(空格和沒有東西是可以被打印的);str.isidentifier是否滿足標識符定義規則(字母或下劃線開頭,只含數字、字母和下劃線)
大小寫轉換:str.capitaiize:轉換為首字母大寫,其余小寫;str.title各單詞首字母大寫。
對齊:居中str.center(長度,填充物) ;左對齊:ljust ;右對齊:rjust。
填充:str.zfill(長度)相當于右對齊,前方補0。如果str前有正負號,則正負號也算長度,在正負號之后填充。
移除:左右兩邊:str.strip(字符chars) ; 左邊:str.lstrip ;右邊;rstrip
字符串的查找:find和index
str.find(s):從左至右查找str中是否含s,有則返回第一次出現s的索引位置,否則返回-1
str.index(x):從左至右查找是否含有x,有則返回第一次出現的索引位置,沒有則拋出ValueError
str.rfind和str.rindex就是從右至左查找。
字符串的替換:S.replace(old,new,count)。將S中的old替換為new,如果給定count,則只替換前count個old子串。
拆分/分割:
S.split(分隔符sep,分割次數maxsplit), maxsplit = -1或不指定時,會從左向右搜索完整個字符串。S.rsplit是從右往左。生成列表。
S.partition(sep),S.rpartition(sep)(從右往左搜索)。搜索S中的子串sep,并從第一個sep處分割,返回一個包含三個元素的元組 -->(sep左邊的部分,sep,sep右邊的部分)。如果搜索不到sep,則返回中有兩個元素為空,partition是后兩個元素為空,rpartition是前兩個為空。
連接組合:S.join(字符串對象)。 當對象為字符串字典時,結果是鍵的連接。
15、列表類型
列表list是可變對象,則對其增刪改查不會改變其的id。除了list.copy.
方法:
(1)添加:
list.appand(x):將元素x添加到列表的尾部;
list.extend(L):將列表L中所有元素添加到列表的尾部;
list.insert(index,x):在列表指定位置index處添加元素x;
(2)刪除:
list.remove(x):刪除列表中首次出現的元素x;
list.pop(kediedai[index]):刪除并返回指定位置的元素(可以理解為挖取出),list為空就拋IndexError異常;
list.clear:刪除列表中所有元素,但保留列表對象。
(3)排序:
list.reverse:倒序;
list.sort:排序(正或倒);
(4)其他:
list.index(x):返回值為x首次出現的下標;
list.count(x):返回x的出現總次數;
list.copy :返回列表對象的淺拷貝。很厲害!!它可以改變列表的ID!
**淺拷貝——只拷貝一層。**如果拷貝對象只有一層,那么同b = a[:],兩個變量相互獨立的。但如果拷貝對象只有一層,就會有影響,會跟著改變。
!!列表推導式:
[新元素表達式 for 臨時變量 in 可迭代對象 if 條件表達式]
16、集合類型
集合中的元素沒有順序,且不重復。集合set是可變的,用大括號表示。
但是{}表示空字典;set表示空集合,用set創建集合時,會將元素一個一個拆開,如’hello’變成’h’,‘e’,‘l’,‘l’,‘o’。
集合中元素要是固定數據類型:整數、浮點數、字符串、元組等。不可為可變的列表、字典、集合。
利用集合過濾掉重復的元素。
4種基本操作:交(&)、并(|)、差(-)、補(^)
S.add ;S.clear ;S.copy ; S.remove ;len(S) ;x (not)in S ;
**S.pop:隨機返回S中的一個元素,如果S為空,產生KeyError.(區分list.pop([index]))
特有的:S.discard(X);如果x在S中,移除x,不在,不報錯。
主要三大用途:成員關系測試、元素去重、刪除數據項。
17、字典類型(映射)
{建(key):值(value)}。鍵不能重復,且是不可變對象。值可變。元素沒有順序。
創建一個空字典:dict ;創建字典:dict(‘a’=1,‘b’=2)/dict(‘a’:1,‘b’:2)/dict((‘a’,1),(‘b’,2))
查找值:Dict[key] ;修改鍵值:dict[key] = new_value ;增添新鍵值:dict[new_key] = new_value .
D.keys:返回所有鍵的列表,如dict_keys([‘a’, ‘b’, ‘c’]);
D.values:返回所有值的列表,如dict_values([1, 2, 3]);
D.items:返回所有的鍵值對的列表,如dict_items([(‘a’, 1), (‘b’, 2), (‘c’, 3)]);
D.get(key,v):鍵存在則返回相應值,否則返回None(自定義了v時,返回v的內容);
D.pop(key.value):鍵存在則返回相應值,同時刪除鍵值對,否則返回None;
D.popitem:隨機取出一個鍵值對,以元組(key,value)形式返回;
D.setdefault(k,v):如果鍵k存在,返回對應值,否則添加項目k = v,v默認為None;
D.update(dict):更新或添加鍵值對;
D.clear:刪除所有的鍵值對;
del.D[key]:刪除key對應的鍵值對。如果key不存在,則拋出KeyError。 遍歷:
for 變量名 in 字典名:
18、可變與不可變(關于值)
可變:列表(有序)、集合(無序)、字典(無序)
不可變:字符串(有序)、元組(有序)
Python是基于值的內存管理方式,舉例:a=[1,2,3],b=[1,2,3],a==b成立。 但是id(a)與id(b)不相等,id(a[0])==id(b[0])成立。總結就是關乎值的就相等
什么叫可變?即值是可變的,但id是固定不變的。例如可變的列表,修改列表L中的一個元素的值,列表L的id是不變的。
不管是可變還是不可變的序列類型:
(1)分片必定產生新的序列;
(2)“+”號在等號右邊(L=L+[i]),必定產生新的序列。然后將新的序列地址賦予給等號左邊的變量。(每一次執行時都會將原列表復制一次,L指向新列表,并在新列表中加入新元素)
對三種列表添加方法進行總結:
(1)L=L+[i]在每一次執行時都會將原列表復制一次,L指向新列表,并在新列表中加入新元素。
(2)L.append(i)只是將新元素直接添加到原列表中,不會產生新列表。
(3)L+=[i]的執行效果和L.append(i)類似,也是在原列表中直接添加元素,不會復制原列表。
b = a時,b就是跟著a變化,并且a與b的id一樣。b = a[:]時,b與a是獨立的整體,id就不同,只不過指向了同一個值。對a做修改(增刪改查),對b沒有影響。
19、程序的三種基本結構:
順序結構、·分支結構(if-else、elif)、·循環結構(遍歷:for…in、條件:while。循環控制:break/continue)。
異常值處理:try-except。
二分支結構簡單語法:表達式1 if 條件 else 表達式2
循環結構分遍歷循環(for)和無限循環(while):
遍歷循環:for 循環變量 in 遍歷結構:語句塊(從遍歷結構逐一提取元素,放在循環變量中,對每一個提取出的元素執行一次語句塊。)
無限循環:while 條件:語句塊。判斷條件為True就一直循環,為false時魂環結束,執行與while同級別縮進的后續語句。
break用于結束當前循環,如果有兩層循環,break用于跳出最內層for或while循環,脫離該循環后程序從循環后代碼繼續執行;
continue用來結束當前循環的當次循環過程,即跳出循環體中下面尚未執行的語句,但不跳出當前循環。
當有輸入要求時,可運用異常值處理try:except:
20、函數
(1)形參與實參:定義函數時的參數是形參,調用函數時的參數是實參。
(2)參數傳遞的方法:位置參數、默認值參數、關鍵字參數、命名關鍵字參數。。。
位置參數:按位置順序傳遞參數值,位置參數要在所有參數之前,是第一個參數;
關鍵字參數:關鍵字參數就是在調用函數,傳入實參時指定形參的變量名。關鍵字不用遵守位置的對應關系。參數之間的順序可以任意調整。關鍵字傳遞可以和位置傳遞混用。但位置參數要在關鍵字參數之前。舉例:def hello(name,age = 11,gender = ‘F’):(age = 11,gender = 'F’就是關鍵字參數)
。舉例:def hello(name,age = 11,gender = ‘F’):(age = 11,gender = 'F’就是關鍵字參數)
默認值參數:定義參數時已經給定值,一般參數為不可變對象,(如果為可變的空列表,可用于裝位置參數);
可變數量參數:*args、**kw
帶有星號*的可變參數只能出現在參數列表的后面。調用時,*參數被當作元組類型傳遞到函數中。(如: def func(*args): -> func(10,20))
帶雙星號(**)的參數,在使用時必須指定參數值,使用key=value這種形式,只能出現在參數列表的最后。調用時,**kw后的那些參數被當作字典類型傳遞到函數中。(如:def func(**kw): -> func(a=10,b=20))
強制命名參數:參數帶星號或者就是一個星號(def f(*c或*,a,b,c)),強制命令參數*c的含義是它后面的參數必須用實名調用,即必須用 a = … , b = … 來調用,不能只寫值。
Python中只有函數,函數是有返回值的,**如果沒有return,默認返回None。**return返回多個值時,多個值以元組形式保存。
21、比較
(1)list.sort與全局sorted
list.sort(key = None,reverse = False)是列表內置排序方法。但其返回值為None(x.sort的結果、print(x.sort)、x = x.sort后x的結果都是None),只有當文字說“執行語句x.sort,x的值為”,x.sort作用的結果,需要通過打印被作用的列表才可以查看結果。true是倒序,false是正序。
sorted:Python內置方法。返回新的列表。
(2)list.reverse和reversed
list.reverse返回的是None,其作用的結果,需要通過打印被作用的列表才可以查看結果。
reversed:內置方法。經過reversed作用之后,返回的是一個吧序列值經過倒序的迭代器,所以,需要通過遍歷或list、tuple或next方法,才能獲得作用后的值。
(3)字符串的查找:find和index
str.find(s):從左至右查找str中是否含s,有則返回第一次出現s的索引位置,否則返回-1
str.index(x):從左至右查找是否含有x,有則返回第一次出現的索引位置,沒有則拋出ValueError
str.rfind和str.rindex就是從右至左查找。
22、函數變量的作用域
(1)局部變量、全局變量、global
global:用于在函數中直接修改全局變量的值。
(2)內嵌函數
內嵌函數的作用域僅限其所在的函數體內。如果要在內部函數中修改外部函數中的局部變量的值,使用nonlocal關鍵字。
這些常見知識點,你都掌握了嗎?