Python-數據類型總結

1、介紹

按存儲空間的佔用分(從低到高):
數字
字符串
集合:無序,即無序存索引相關信息
元組:有序,須要存索引相關信息,不可變
列表:有序,須要存索引相關信息,可變,須要處理數據的增刪改
字典:無序,須要存key與value映射的相關信息,可變,須要處理數據的增刪改python

按可變不可變區分:
一、可變類型:在id不變的狀況下,value能夠變,則稱爲可變類型,如列表,字典
二、不可變類型:value一旦改變,id也改變,則稱爲不可變類型(id變,意味着建立了新的內存空間)git

進制:
1個二進制位是計算機裏的最小表示單元
1個字節是計算機裏最小的存儲單位
二進制位=bit = 8bits
8bits = 1Byte = 1字節
1024Bytes = 1KB = 1KB
1024KB = 1MB = 100萬字節 = 100萬字符 = 1兆
1024MB = 1GB = 一部高清電影短片, 1080p 20分鐘,
1024GB= 1TB
1024TB = 1PBapi

2、數字類型

整型int:
定義:age=10 #age=int(10)
用於標識:年齡,等級,身份證號,qq號,個數
在32位機器上,整數的位數爲32位,範圍爲-231~231-1,即-2147483648~2147483647
在64位系統上,整數的位數爲64位,範圍爲-263~263-1,即-9223372036854775808~9223372036854775807數組

浮點型float:
定義:salary=3.1 #salary=float(3.1)
用於標識:工資,身高,體重
跟C語言不一樣,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上因爲機器內存有限,咱們使用的長整數數值不可能無限大。
注意:從Python2.2起,若是整數發生溢出,Python會自動將整數數據轉換爲長整數,在長整數數據後面不加字母L也不會致使嚴重後果了。在Python3裏再也不有long類型了,全都是int。app

複數型complex:ide

>>> x=1-2j
    >>> x.real

長整形函數

在python2中(python3中沒有長整形的概念):

3、bool 布爾

布爾值,一個True:真,一個False:假
計算機俗稱電腦,即咱們編寫程序讓計算機運行時,應該是讓計算機無限接近人腦,或者說人腦能幹什麼,計算機就應該能幹什麼,人腦的主要做用是數據運行與邏輯運算,此處的布爾類型就模擬人的邏輯運行,即判斷一個條件成立時,用True標識,不成立則用False標識
全部數據類型都自帶布爾值
一、None,0,空(空字符串,空列表,空字典等)三種狀況下布爾值爲False
二、其他均爲真測試

4、字符串-string

概念
在python中,加了引號的字符就是字符串類型,python並無字符類型。
做用:名字,性別,國籍,地址等描述信息
定義:在單引號雙引號三引號內,由一串字符組成
多引號:做用就是多行字符串必須用多引號。spa

字符串相加其實就是簡單拼接
注意1:字符串相加的效率不高,字符串+字符串,而是申請一個全新的內存空間存入2個字符串,至關字符串與字符串的空間被複制了一次。
注意2:只能字符串加字符串,不能字符串加其餘類型。命令行

經常使用功能
轉換格式:

.str()    #將非字符串表示爲字符串

移除空白:

.strip()    #把字符串開頭和結尾的空格及/n,括號裏能夠指定清除內容
.rstrip()   #清除末尾空白
.lstrip()   #清除開頭空白

拼接:

「+」拼接       #次數少適用
print(xx.join([「」,「內容」])) #xx 能夠爲特殊字符、空格,節省內存空間

空白:

/t        #添加製表符
/n        #換行符

分割:

「hello world」.split(「l」,x)  #x爲最大分割數
rsplit         # 從右開始切分

查找:

xx.find(「x」,3)      #返回找到的第一個值的索引,找不到返回-1
xx.rfind(「x」)       #返回從右往左找到的第一個值的索引
xx.count(‘x’,2,8)   #統計字符串2到8之間的x, 不指定範圍則查找全部

長度:

xx.index(「x」)   #返回內容長度,查找不到會報錯

替換:

(「x」.replace(「y」))  #不會改變列表,只打印當前

顯示位置:

xx.center(50,’-’)  #向左間隔50,後面爲填充
xx.ljust(50,’-’)   #向右對齊
xx.zfill (50)      #大於字符串長度的時候補0

格式化輸出:

print(「hello %s」%s)    #佔位符:%s字符串,%d整型,%f浮點型
xx.format(30)   #進行賦值
print("hello {name}, his age is {age}".format({"name":"egon","age":1000}))  
#鍵值對位置變更不影響使用。建議改方法
print("hello {0}, his age is {1}".format(34,"alex"))  #0和1必須按順序來
print("HELLO\n wor\nld\n".splitlines())
print("HELLO\n wor\nld\n".split("\n"))  #和上面的區別是最後一個爲空

判斷:

xx.isalnum()      #a-z、A-Z、0-9
xx.isdecimal()  #判斷是否是一個正整數
xx.isdigit()    #判斷bytes和unicode類型,經常使用於判斷數字
xx.isnumeric()  #識別羅馬數字
xx.isalpha()      #判斷是否是字母,返回True和False
xx.isidentifier ()  #判斷是否是一個合法關鍵字
xx.islower()      #檢測字符串是否由小寫字母
xx.isupper()      #判斷是否是大寫
xx.isspace()      #判斷如果空格則爲真
type(‘xxxx’) is str          #判斷是否是字符串,命令行下
xx.isinstance(‘xxxx’,str)     #判斷變量類型

注意:最經常使用的是isdigit,能夠判斷bytes和unicode類型,這也是最多見的數字應用場景,若是要判斷中文數字或羅馬數字,則須要用到isnumeric

字母格式:

xx.endswith(‘x’)   #以x爲結尾區分大寫,返回真假值
xx.capitalize()  #第一個大寫
xx.title()       #每一個單詞首字母大寫
xx.casefold()    #全變成小寫,支持拉丁文等
xx.lower()         #全變成小寫,只支持英文,經常使用方法
xx.upper()         #全變成大寫

設置t的長度:
print("HELLOtworld".expandtabs(30))

轉義符:

‘let\‘xx’
r「\xxx」   #r顯示輸出內容

佔位符,如:%s、%d

%s字符串佔位符:能夠接收字符串,也可接收數字
print('My name is %s,my age is %s' %('egon',18))
%d數字佔位符:只能接收數字,不然會報錯。
%f浮點數:


5、運算符

計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算。

算數運算
假設變量:a=10,b=20

比較運算
圖片描述

賦值運算
圖片描述

位運算
圖片描述

邏輯運算
圖片描述

三者的優先級:or<and<not,同一優先級默認從左往右計算

and註解:
在Python 中,and 和 or 執行布爾邏輯演算,如你所期待的同樣,可是它們並不返回布爾值;而是,返回它們實際進行比較的值之一。
在布爾上下文中從左到右演算表達式的值,若是布爾上下文中的全部值都爲真,那麼 and 返回最後一個值。
若是布爾上下文中的某個值爲假,則 and 返回第一個假值

or註解:
使用 or 時,在布爾上下文中從左到右演算值,就像 and 同樣。若是有一個值爲真,or 馬上返回該值
若是全部的值都爲假,or 返回最後一個假值
注意 or 在布爾上下文中會一直進行表達式演算直到找到第一個真值,而後就會忽略剩餘的比較值

and-or結合使用:
結合了前面的兩種語法,推理便可。
爲增強程序可讀性,最好與括號連用,例如:(1 and 'x') or 'y'

成員運算

圖片描述

身份運算
圖片描述

#is比較的是id,而==比較的是值

運算符優先級
圖片描述

6、列表-list

在[]內用逗號分隔,能夠存放n個任意類型的值,適用於存儲在程序運行期間可能變化的數據集
可賦值:數據、字符串、列表、字典
經常使用操做:索引、切片、追加、刪除、長度、切片、循環、包含
屬於可迭代對象:可以進行for循環

函數

cmp(list1, list2) # 用於比較兩個列表的元素
若是比較的元素是同類型的,則比較其值,返回結果。
若是兩個元素不是同一種類型,則檢查它們是不是數字。元素相同返回0.
len(list)  #返回列表元素個數

max(list)  #返回列表元素中的最大值

min(list)  #返回列表元素中的最小值

list(seq)  #用於將元組轉換爲列表。

number = list(range(2,21,2))
#打印1-21列表中的偶數

number = list(range(1,1000))
#打印1-1000之間的數值並以列表的形式輸出

number = list(range(1,21,2))
#打印1-21列表中的奇數

summation = sum(number)
#求列表總和

for number in range(1,21)  # 循環列表
打印1-20的數字,range最後一個範圍值不打印

方法

list.append(obj)   #將元素添加到末尾,該方法無返回值,可是會修改原來的列表

list.insert(index, obj)    #用於將指定對象插入列表的指定位置
index--對象 obj 須要插入的索引位置。obj--要插入列表中的對象

list.pop(obj=list[-1]) #用於移除列表中的一個元素(默認最後一個元素),而且返回該元素的值
obj -- 可選參數,要移除列表元素的對象

list.remove(obj)    # 用於移除列表中某個值的第一個匹配項
obj--列表中要移除的對象。按元素的值刪除,只刪除第一個重複的值

del dine_together[2]  #按位置刪除,需知道索引,刪除後消失

dine_together.clear()  #清空列表

list[index]= NewValue  # 更改元素

list.extend(seq)  #在列表末尾一次性追加另外一個序列中的多個值

print(set(index)) # 去重複內容,並從新排序

list.reverse()  #反轉,用於列表倒序,永久修改,再次調用可恢復原始

print(sorted(list))  #顯示臨時排序,不影響原始排序

print(sorted(list,reverse=True))  #臨時排序反方向

list.sort([func])  # func -- 可選參數
#對原列表進行排序,若是指定參數,則使用比較函數指定的比較函數

list.sort()  #永久排序,按字母順序

list.sort(reverse=True)  #反方向排序。是按ASCII表的順序也是字母順序

list.index(obj)  #用於從列表中找出某個值第一個匹配項的索引位置

list.index(ind1:ind2) #獲取從ind1到ind2直接的元素

list*expr  # 列表重複expr次

type(a)  #type()是查看數據類型的方法

for i in l:   # 遍歷

切片:
print(list[1:4])   #取下標1至4之間內容不包括4,[]內必須有下標。
print(list[:4])    #從列表開頭開始提取,把0省略
print(list[-4:])   #從末尾提取
list[::-1]     # 能夠視爲翻轉操做
list[::2]     # 隔一個取一個元素

7、元組-tuple

存多個值,對比列表來講,元組不可變(是能夠當作字典的key的),主要是用來讀。修改、刪除元組變量,必須修改時需從新賦值
做用:協同做業時不能隨意更改,更改須要list(xx)轉成列表
經常使用操做:索引、切片、循環、長度、包含
dir:顯示全部方法,只讀.明確的表示 元組裏存儲的數據是不該該被修改的;
list( tuple元組) 變成列表,tuple(list列表) 變成元組

函數

cmp(tuple1, tuple2) # 比較兩個元組元素
len(tuple)  # 計算元組元素個數
max(tuple)  # 返回元組中元素最大值。
min(tuple)  # 返回元組中元素最小值。
tuple(list)  # 將列表轉換爲元組。

索引:
圖片描述

元組運算符

與字符串同樣,元組之間可使用 + 號和 * 號進行運算。這就意味着他們能夠組合和複製,運算後會生成一個新的元組

圖片描述

注意:由於括號()既能夠表示tuple,又能夠表示數學公式中的小括號。
   因此,若是元組只有1個元素,就必須加一個逗號,防止被看成括號運算

8、字典-dict

用於標識:存儲多個值的狀況,每一個值都有惟一一個對應的key,能夠更爲方便高效地取值。字典是無序的特性。
定義:key必須是不可變類型,value能夠是任意類型
經常使用操做:索引、新增、刪除、(鍵、值、鍵值對)、循環、長度

函數:

cmp(dict1, dict2)   # 比較兩個字典元素
若是兩個字典的元素相同返回0,若是字典dict1大於字典dict2返回1,若是字典dict1小於字典dict2返回-1
len(dict)       # 返回字典的元素個數,即鍵的總數。dict -要計算元素個數的字典
str(dict)      # 將值轉化爲適於人閱讀的形式,以可打印的字符串表示
type(dict)     # 返回輸入的變量類型,若是變量是字典就返回字典類型

方法:

dict.clear()  # 刪除字典內全部元素
dict.copy()   # 返回一個字典的淺複製
dict.fromkeys(seq[, val])  
#建立一個新字典,以序列 seq 中元素作字典的鍵,value爲字典全部鍵對應的初始值,該方法返回列表。
    seq -- 字典鍵值列表。
    value -- 可選參數, 設置鍵序列(seq)的值
    
dict.get(key,default=None)  # 返回指定鍵的值,若是值不在字典中返回默認值None
    key -- 字典中要查找的鍵。
    default -- 若是指定鍵的值不存在時,返回該默認值值    

dict.has_key(key)  # 若是鍵在字典裏返回true,不然返回false
dict.items()  # 返回可遍歷的健值對(鍵, 值)列表,元組數組   

dict.keys()  # 以列表返回一個字典全部的鍵
    keys方法也能夠肯定這個鍵在不在字典中

dict.setdefault(key, default=None) 
# 和get() 方法相似, 若是鍵不存在於字典中,將會添加鍵並將值設爲默認值.
     default -- 鍵不存時,設置的默認鍵值

dict.update(dict2) # 把字典dict2的鍵/值對更新到dict裏
dict.values()  # 以列表返回字典中的全部值,不包含任何鍵

pop(key[,default])  
# 刪除字典給定鍵 key 所對應的值,返回值爲被刪除的值。key值必須給出。 不然,返回default值。
    key: 要刪除的鍵值
    default: 若是沒有 key,返回 default 值

popitem()  # 隨機返回並刪除字典中的一對鍵和值

sorted()    #按順序遍歷字典中全部的鍵,按照字母順序排序
#for i in sorted(list.keys())

案例
圖片描述

9、集合-set

集合-set
能夠包含多個元素,用逗號分割,集合的元素遵循三個原則:
一、每一個元素必須是不可變類型(可hash,可做爲字典的key)
二、沒有重複的元素
三、無序

名詞解釋:
交集 兩個都有
差集 在列表a裏有,b裏沒有
並集 把兩個列表裏的元素合併在一塊兒去重,自然去重
做用:關係測試(無序的),交集、差集、並集(合併去重複)

集合符號簡化

一、交集:.intersection()    # &能夠替代
二、差集:.different()       #只打印.以前集合的,—能夠替代
三、對稱差集:.symmetric_difference()     #互相的差別都打印,^能夠替代
四、並集:.union()           #合併,| 能夠替代
五、父集:>,>=
六、子集:<,<=

經常使用操做
增:

dict.update()   #把()中的合併到.以前的集合中,會改變集合
dict.add()      #在集合中添加元素
dict.append()   #用於在列表末尾添加新的對象
dict.difference_update()   把差集去除來存到.前的集合中

刪:

dict.clear()         #刪除字典內全部元素
dict.discard()     #刪除  元素不存在不會報錯
dict.popitem()      #隨機返回並刪除字典中的一對鍵和值
dict.pop(key[,default]) 
#刪除字典給定鍵 key 所對應的值,返回值爲被刪除的值。key值必須給出。 不然,返回default值。

輸出、判斷:

dict.values()       #以列表返回字典中的全部值
dict.get(key, default=None)    #返回指定鍵的值,若是值不在字典中返回default值
dict.copy()         #返回一個字典的淺複製
dict.items()        #以列表返回可遍歷的(鍵, 值) 元組數組
dict.has_key(key)   #若是鍵在字典dict裏返回true,不然返回false
dict.issubset()     #判斷()裏的是否爲.前的子集
dict.issuperset()   #超集、父集,能夠用<、>表示
dict.isdisjoint()   #兩個集合沒有交集返回爲true

特殊經常使用

dict.discard ()    #元素不存在會報錯
cmp(dict1, dict2)  #比較兩個字典元素
len(dict)          #計算字典元素個數,即鍵的總數。
str(dict)          #輸出字典可打印的字符串表示。
type(variable)     #返回輸入的變量類型,若是變量是字典就返回字典類型。
相關文章
相關標籤/搜索