最实用的Python基础讲解,带你轻松学完数据类型
Python 的數(shù)據(jù)類型
1. 數(shù)字類型
2. 字符串類型
3. 布爾類型
4. 列表
5. 元組
6. 字典
7. 集合
python 語言的好處,對變量不用事先定義,隨用隨定義,也不用特意用分號做語句末端的分隔,大部分用換行和縮進來規(guī)范代碼的編寫,自己識別,編譯工具也非常友好(如:Pycharm)。但從內存使用的出發(fā)角度來說,它會在編譯器中自動做判斷,這就是它速度慢的原因。
下面舉例在C語言中和python語言中的定義:
C: Python:int a = 2; a = 2 #只給 a 賦值 2,但編譯器不知道a的數(shù)據(jù)類型float b = 2.1; #它會在內存中一直判斷a的數(shù)據(jù)類型,最終判斷為int型/* 簡單明了,直接內存分配*/1. 數(shù)字類型
1.1 數(shù)字整型 :int用于定義整數(shù)的關鍵字,如:2,3,51.2 浮點型: float , double用于定義小數(shù)的關鍵字,但 float 與 double精度不同。1.3 精度 :float和double的精度是由尾數(shù)的位數(shù)來決定的。浮點數(shù)在內存中是按科學計數(shù)法來存儲的,其整數(shù)部分始終是一個隱含著的“1”,由于它是不變的,故不能對精度造成影響。 float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數(shù)字,但絕對能保證的為6位,也即float的精度為6~7位有效數(shù)字;double:2^52 = 4503599627370496,一共16位。同理,double的精度為15~16位。但是python的編譯環(huán)境是非常友好的,它會自己幫你轉化,所以我們可以直接賦值直接用,但由于精度的原因,也會造成精度的丟失
2. 字符串類型
2.1 String 類型,在python中簡寫成 str 。用于定義字符串的關鍵字。用單引號和雙引號引起來。
定義方式: a = “Hello_world!” 或 a = ‘Hello_world’
但如果我們要輸入 I’m fine 該怎么辦呢? 這里有兩種方法:
(1)用雙引號在外邊引起來,但必須是成雙成對出現(xiàn):
print(" I’m fine ")
(2)用轉義符 ’ ’ 來轉義字符實現(xiàn)輸出:
print(’ I’m fine ')
2.2 字符串的轉換,如想將整型數(shù)字和字符串連接起來,可以有兩種方法來操作:
第一種方法:用 ‘ + ’連接,并將數(shù)字類型前用str()將其轉換成字符串類型,否則會報錯:數(shù)據(jù)類型不合法
b = 163
c = “cm”
print( str(b)+c ) ## 163cm
第二種方法:用 字符內部函數(shù) join 來實現(xiàn)字符串的連接
d = “小明”
e = “is handsome”
print(d.join(e)) ##小明is handsome
2.3 字符串的內置方法在后續(xù)更新中將會全部一 一講解。
3. 布爾類型
雖然整型、浮點型和數(shù)字類型有無數(shù)種可能的值,但 '布爾’數(shù)據(jù)類型只有兩種值:True和False。Boolean的首字母要大寫。
print(7>6) ##True
print(1==3) ##False
同樣也可以用于其他類型的Boolean操作。
4. 列表
4.1 列表是什么?
"列表"是一個值,它包含多個字構成的序列。術語“列表值”指的是列表本身,而不是指列表內的那些值。列表看起來像這樣:[‘cat’ , ‘dog’ , ‘bat’]。列表用左方括號開始,右方括號結束,即[ ]。列表中的值也成為“表項”。表項之間用逗號分隔開。
定義方法: 變量名 = [ 表項 ] 如: animals = [‘cat’ , ‘dog’ , ‘bat’]
4.2 查列表內容
4.2.1 用下標取得列表中的單個值
| 索引值 | 0 | 1 | 2 |
animals[0] = cat
animals[1] = dog
animals[2] = bat
切記,下標只能是整數(shù)且從0開始,不能是浮點數(shù)。如果使用的下標超出了列表中值的個數(shù),Python將給出IndexError出錯信息。
5. 元組
5.1 元組(Tuple)與列表十分相似,但有一個特別明顯的區(qū)別在于,元組一旦初始化就不可以修改。列表是“可變的”數(shù)據(jù)類型,元組是“不可變的”數(shù)據(jù)類型,它就像定義一個字符串一樣,一旦定義出來就不能被更改。
5.2 元組的定義變量名 = ( 元組內容)如:vagetables = ( 'tomoto', 'potato','mushroom' )由于只能查看調用元組內容,方法與列表一樣。5.3 用 list() 和 tuple() 函數(shù)來轉換類型函數(shù) list() 和 tuple() 將返回傳遞給它們的值的列表和元組版本。tuple ( [ 'dog', 'cat', 5 ] ) ----->('dog' , 'cat' , 5)list [ ( 'dog' , 'cat' , 5 ) ] ----->['dog' , 'cat' , 5]6. 字典
6.1 字典(dictionary)是python中唯一的映射類型,采用鍵值對 (key-value) 的形式存儲數(shù)據(jù)。python 對 key 進行哈希函數(shù)運算,根據(jù)計算的結果決定 value 的存儲地址。所以字典是無序存儲的,且key必須是可哈希的。可哈希表示key必須是不可變類型,如:數(shù)字、字符串、元組。每個鍵和它的值之間用冒號( : )隔開,項之間用逗號( , )隔開,整個字典由一對大括號括起來。字典中鍵是唯一的,而值并不唯一。
6.2 字典的創(chuàng)建和使用 6.2.1 直接創(chuàng)建和轉化創(chuàng)建(1) 直接創(chuàng)建: dic = {'name' : 'zhw', 'age':'20', 'sex' : 'male', 'as' : True, }注意:大家在直接創(chuàng)建字典時,要有在末尾加上逗號的習慣,這樣如果需要添加新的鍵值對時方便,涉及后面做全棧用Django框架時對添加app有良好的編程習慣。(2)用dict()函數(shù)轉化創(chuàng)建items = [ ('name', 'zhw'), ('age', 20)]d = dict(items)print(d) ## {'name' : 'zhw' , 'age' : 20}6.3 對字典操作,查、增、刪、更新。我們創(chuàng)建一個字典 dic = {'name' : 'zhw', 'age':'20', 'sex' : 'male', 'as' : True, }(1)查i. 直接打印查詢print(dic('name'))ii. 通過內置get() 方法返回鍵對應的值,有則返回鍵對應的值,無則返回 None. 也可指定返回內容print(dic.get('zz')) ------>Noneprint(dic.get('zz','Uknown')) ------>Known (2)增加新的鍵值對或者修改i. dic[' hobby'] = 'music' #若鍵存在則修改,不存在則添加ii. setdefault() 方法 #若鍵存在則不修改,若鍵不存在則增加新的鍵值對dic.setfault('tall', 173) iii. update() 更新方式 ,如果鍵存在則修改,若鍵不存在則增加新的鍵值對dic1 = {'name':'zhw','age':'20','sex':'male','as':True,}dic2 = {'hobby':123,'heiht':187}dic1.update(dic2)print(dic1) ##結果如下 {'name':'zhw','age':'20','sex':'male','as':True,'hobby':'soccer','heiht':187}(3)刪dic3 = {'name':'zhw','age':'20','sex':'male',}i. del dic3['age'] ##準確的刪除某個鍵,鍵一刪除,值也相應被刪除 del dic3 ##刪除整個字典ii. clear( ) ##清空整個字典,但會保留字典為空ii. pop( ) ##通過鍵的查找拋出,也可傳參給變量,類似列表iii. popitem( ) ##隨機刪除某組鍵值對,并以元組方式返回值a = dic3.popitem( )print( a ) 6.4 對字典的遍歷三種字典方法:keys() , values() , items()方法for k in dic.keys():print( k ) ## keys( )遍歷的是鍵for v in dic.values():print( v ) ## values() 遍歷的是值for i in dic.items():print( i ) ## items() 遍歷的是鍵-值對,以元組的形式輸出(1)高效遍歷字典for i in dic:print( i , dic[ i ] )這里 i 做循環(huán)數(shù),但在dic [ i] 里面做下標,這樣可以準確快速的定位到對應的鍵值對,比傳統(tǒng)的遍歷更節(jié)省時間。(2)傳統(tǒng)遍歷字典for i,v in dic6.items():print(i,v)這里遍歷方法較傳統(tǒng),速度較慢。7. 集合
7.1 集合(set)是一個無序的不重復元素序列,元素必須是可哈希的。集合可以使用大括號 { } 或者set() 函數(shù)創(chuàng)建,注意:創(chuàng)建一個空集合必須用 set() 而不是 { },因為 { } 是用來創(chuàng)建一個空字典的。
7.2 創(chuàng)建集合:para = {val0, val1, val2,...} 或者 set(val)7.3 集合的顯著去重功能s = set('alice like')print(s) ##{'c', 'i', 'l', 'a', 'e', 'k', ' '}7.4 集合的增加、刪除、清空s = [2,33,44,'zhw' ]s1 = set( s )(1)增加s1.add( x ) #將元素x添加到集合s1中,如果元素已存在,則不進行任何操作s1.update( x ) # update方法可以添加元素,且參數(shù)可以是列表,元組,字典等。如: s1.update( [ 1,5 ] )(2)刪除s1.remove(x) #將元素x從集合s1移除,如果元素不存在,則會報錯s1.discard(x) #如果元素不存在,不會放生錯誤s1.pop() #設置隨機刪除集合中的一個元素(3)清空s1.clear() #清空集合中的元素,保留為空集合7.5 集合類型操作符7.5.1 in ,not inprint(a in b) | print(a not in b) 判斷a包含于b 判斷a不包含于b (這里a,b都為集合)7.5.2 等價與不等價(==,!=)print(set('alex')==set('alexxxx'))7.5.3 超集與子集print(set('alex')<set('alexwww')) #我們先搞清楚數(shù)學中兩集合的關系概念,'alexwww'包含'alex'print(a.issuperset(b)) #超集 a>b a包含b內的所有元素且元素比b多 print(a.issubset(b)) #子集 a<b a包含于b內的所有元素且元素比b少這里做判斷7.5.4 關系測試:交集,并集,差集a = set([1,2,3,4,5])b = set([4,5,6,7,8])#intersection() 交集 interc '&'print(a.intersection(b)) #{4, 5}print(a & b)#union 并集 ‘|’管道符print(a.union(b)) #{1, 2, 3, 4, 5, 6, 7, 8}print(a | b)#difference 差集 '-'print(a.difference(b)) #{1, 2, 3} in a but not in bprint(a - b) print(b.difference(a)) #{8, 6, 7} in b but not in aprint(b - a)#對稱差集 {1, 2, 3, 6, 7, 8}print(a.symmetric_difference(b)) print( a ^ b )本文純屬個人見解,適用于基礎數(shù)據(jù)類型的基本概念與操作,希望能對初學者帶來幫助,謝謝大家閱讀,也歡迎大家在評論區(qū)發(fā)表疑惑!
總結
以上是生活随笔為你收集整理的最实用的Python基础讲解,带你轻松学完数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一款成功的全球服游戏该如何进行架构选型与
- 下一篇: 关于图像金字塔