Python3萌新入門筆記(24)
2023-01-13由 opython 發表于 林業
橫向製表符是什麼
在學習新的內容之前,我們對前面所學內容做一些補充。
第一部分,變數的賦值與交換。
一、鏈式賦值(Chained Assignment)
開啟Python控制檯,在提示符後方我們進行下面的操作。
>>> a = b = c = 0>>> a # 檢視變數a的值0>>> b # 檢視變數b的值0>>> c # 檢視變數c的值0
透過上方的示例大家能夠看出,當多個變數具有相同的值,我們可以透過這種多個變數之間寫等號的方式進行賦值。
二、序列解包(Sequence Unpacking)
如果我們給多個變數寫入不同的值呢?
我們可以採用下面這種方式。
>>> a,b,c = 1,2,3 # 多變數賦值>>> a # 檢視變數a的值1>>> b # 檢視變數b的值2>>> c # 檢視變數c的值3
大家能夠看到,我們可以同時對多個變數進行賦值操作,只需要用逗號把它們隔開,並且等號右側值的數量和變數數量相同即可。
這是什麼原理呢?
大家再來繼續嘗試。
>>> 1,2,3(1, 2, 3)
大家能夠看到,當我們輸入多個值並用逗號分隔,實際上是把這些值變成了一個序列(元組)。
Python會自動把這個序列分解,給到對應的每一個變數。
既然能夠對序列進行解包,那麼列表也一樣。
我們再來做嘗試。
>>> a,b,c = [1,2,3]>>> a1>>> b2>>> c3
實際上,字串、列表、元組、集合、字典等都可以進行類似的操作。
那麼,如果右側值的數量與左側不相等呢?
我們可以變數名稱前面寫入“*”,這樣該變數的值會變成一個列表。
我們來做兩個嘗試。
>>> *a,b,c = 1,2>>> a[]>>> b1>>> c2
>>> *a,b,c = 1,2,3,4>>> a[1,2]>>> b1>>> c2
當最左側變數帶有“*”,程式會先對右側變數賦值,然後將剩餘的值(或空值)寫入帶有“*”的變數。
“*”可以寫在任意一個變數的前方,但是隻能有一個。
由此還能夠看出,“*”寫在最右側變數前方時,與寫在最左側變數前方時正好相反。
而“*”寫在中間某個變數前方時,會先對應著為兩側變數賦值,然後將剩餘的值(或空值)寫入帶有“*”的變數。
三、變數交換
我們先來做個嘗試。
>>> a,b = 1,2>>> a,b = b,a>>> a2>>> b1
大家能夠看到,我們可以透過上面這種方式對變數的值進行互換。
這裡只是透過2個變數互換舉例,實際上可以支援多個變數的互換。
四、增量賦值
增量賦值我們在之前的關於運算子教程中已經接觸過。
>>> a = 1>>> a += 1>>> a2
具體內容參考Python3萌新入門筆記(13)的賦值運算子部分。
第二部分,進位制與資料型別
一、進位制
所謂進位制就是人們規定的一種進位方法。
2進位制就是滿2進1位;
8進位制就是滿8進1位;
10進位制就是滿10進1位;
16進位制就是滿16進1位。
不過,在Python中這些進位制有不同的表達方式。
>>> 0x11 # 非10進位制以0開頭,字母x代表16進位制17>>> 0o11 # 非10進位制以0開頭,字母o代表8進位制9>>> 0b11 # 非10進位制以0開頭,字母b代表2進位制3
關於進位制的內容,先了解這些就可以了。
二、資料型別
Python中有六種標準資料型別,分別為Number(數字)、String(字串)、List(列表)、Tuple(元組)、Set(集合)和Dict(字典)。
這裡我們主要補充一下Number(數字)和String(字串)兩種型別。
首先,數字型別包含:Int(整數)、Float(浮點數)、Bool(布林)和Complex(複數)。
整型(Int):即整數,可以透過int(x[,base=10])函式將非整數或整陣列成的字串以及位元組轉換成整數。
print(int()) # 顯示輸出結果為0print(int(1。23)) # 顯示輸出結果為1print(int(‘5’)) # 顯示輸出結果為5print(int(‘0xF’,16)) # 顯示輸出結果為15
浮點型(Float):即小數,float([x])函式將非整數或整陣列成的字串以及位元組轉換成整數。
print(float()) # 顯示輸出結果為0。0print(float(1)) # 顯示輸出結果為1。0print(float(‘5’)) # 顯示輸出結果為5。0print(float(0xf)) # 顯示輸出結果為15。0
布林型別(Bool):透過bool(x)函式,能夠得到引數x的布林值。
print(bool()) # 顯示輸出結果為Falseprint(bool(False)) # 顯示輸出結果為Falseprint(bool(‘’)) # 顯示輸出結果為Falseprint(bool(0)) # 顯示輸出結果為Falseprint(bool(None)) # 顯示輸出結果為Falseprint(bool([])) # 顯示輸出結果為Falseprint(bool(())) # 顯示輸出結果為Falseprint(bool({})) # 顯示輸出結果為False
在Python中除了空值、”、False、0、()、[]、{}、None為False,其它均為True。
複數(Complex):能夠透過complex(x)函式建立一個複數。
print(complex(1)) # 顯示輸出結果為:(1+0j)print(complex(‘2+1j’)) # 顯示輸出結果為:(2+1j)print(complex(2, 5)) # 顯示輸出結果為:(2+5j)
接下來,是字串(String)型別。
字串(String):透過str(object=”)函式能夠將物件轉換為字串。
錯誤示例:
a = str(1)b = a + 1
當我們把數字轉換為字串,進行加法運算時,會丟擲異常。
TypeError: unsupported operand type(s) for -: ‘str’ and ‘int’
型別錯誤:不被支援的運算元型別:字串和整型
第三部分、字串相關函式
一、迭代物件合併為字串
join(iterable)函式能夠將可迭代物件的元素或多個字串合併為一個字串,引數iterable為可迭代物件。如果引數不是字串會丟擲型別錯誤的異常,包括位元組物件。此函式透過元素間的分隔符呼叫。
lst1 = ‘1’, ‘2’, ‘3’print(‘+’。join(lst1)) # 顯示輸出結果為:1+2+3lst2 = [‘1’, ‘2’, ‘3’]print(‘’。join(lst2)) # 顯示輸出結果為:123
二、字串內單詞首字母大寫
這裡需要使用string模組中的capwords(s[,sep])函式,引數s為需要轉換的字串,引數sep為分隔符,省略引數sep時,每個單詞均轉換為首字母大寫單詞;未省略引數sep時,除了第一個單詞首字母轉換為大寫,分隔符後方的第一個字母均轉換為大寫。
示例程式碼:
import stringold_str = ‘my name is xiaolou。’new_str1 = string。capwords(old_str)new_str2 = string。capwords(old_str,‘s ’)print(new_str1) # 顯示輸出結果為:My Name Is Xiaolou。print(new_str2) # 顯示輸出結果為:My name is Xiaolou。
三、多字元轉換
這裡需要使用字串物件呼叫translate(table)函式,引數table為轉換表;
很顯然使用這個函式我們需要先建立轉換表,轉換表包含256個 ASCII字元。
我們並不需要手工去建立轉換表,而是可以使用關鍵字str呼叫maketrans(x[,y[,z]])函式建立轉換表。
只有1個引數時,必須輸入一個字典,字典的鍵值可以是ASCII字元或對應的數字序號,轉換時會用值對應的字元替換鍵對應的字元。
table=str。maketrans({111:‘*’})print(‘photo’。translate(table)) # 顯示輸出結果為:ph*t*
輸入2個引數時,前面的引數是被替換的字元,後面的引數是替換後的字元。
table=str。maketrans(‘o’,‘*’)print(‘photo’。translate(table)) # 顯示輸出結果為:ph*t*
輸入3個引數時,最後一個引數必須是字串,包含在這個字串中的每一個字元都被替換為None(空值)。
注意:函式會先完成第3個引數的替換,再進行前兩個引數的替換。
table=str。maketrans(‘o’,‘*’,‘po’)print(‘photo’。translate(table)) # 顯示輸出結果為:ht
第四部分、字串跳脫字元
\:在字串結尾時為續行符
\\:斜槓
\’:單引號
\”:雙引號
\a:響鈴
\b:退格符
\n:換行符
\t:橫向製表符
\v:縱向製表符
\r:回車符
\f:換頁符
\ooo:八進位制字元
\xhh:十六進位制字元
\000:終止符
\other:其它的字元以普通格式輸出
\N{name}:Unicode資料庫中的字元名
\uhhhh:值為16位的十六進位制字元
\Uhhhhhhhh:值為32位的十六進位制字元
本節知識點:
1、變數賦值與互動
2、進位制與資料型別
3、字串轉換函式
4、字串跳脫字元
本節英文單詞與中文釋義:
1、unpacking(unpack):拆包
2、chained(chain):鏈條式
3、assignment:分配
4、unsupported(unsupport):不支援
5、operand:運算元
6、join:連線
7、make trans:使…轉移
8、trans late:轉移原來的
9、table:表
10、photo:照片