按存儲空間的佔用分(從低到高):
數字
字符串
集合:無序,即無序存索引相關信息
元組:有序,須要存索引相關信息,不可變
列表:有序,須要存索引相關信息,可變,須要處理數據的增刪改
字典:無序,須要存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
整型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中沒有長整形的概念):
布爾值,一個True:真,一個False:假
計算機俗稱電腦,即咱們編寫程序讓計算機運行時,應該是讓計算機無限接近人腦,或者說人腦能幹什麼,計算機就應該能幹什麼,人腦的主要做用是數據運行與邏輯運算,此處的布爾類型就模擬人的邏輯運行,即判斷一個條件成立時,用True標識,不成立則用False標識
全部數據類型都自帶布爾值
一、None,0,空(空字符串,空列表,空字典等)三種狀況下布爾值爲False
二、其他均爲真測試
概念
在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浮點數:
計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算。
算數運算
比較運算
賦值運算
位運算
邏輯運算
and註解:
在Python 中,and 和 or 執行布爾邏輯演算,如你所期待的同樣,可是它們並不返回布爾值;而是,返回它們實際進行比較的值之一。
在布爾上下文中從左到右演算表達式的值,若是布爾上下文中的全部值都爲真,那麼 and 返回最後一個值。
若是布爾上下文中的某個值爲假,則 and 返回第一個假值
or註解:
使用 or 時,在布爾上下文中從左到右演算值,就像 and 同樣。若是有一個值爲真,or 馬上返回該值
若是全部的值都爲假,or 返回最後一個假值
注意 or 在布爾上下文中會一直進行表達式演算直到找到第一個真值,而後就會忽略剩餘的比較值
and-or結合使用:
結合了前面的兩種語法,推理便可。
爲增強程序可讀性,最好與括號連用,例如:(1 and 'x') or 'y'
成員運算
身份運算
#is比較的是id,而==比較的是值
運算符優先級
在[]內用逗號分隔,能夠存放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] # 隔一個取一個元素
存多個值,對比列表來講,元組不可變(是能夠當作字典的key的),主要是用來讀。修改、刪除元組變量,必須修改時需從新賦值
做用:協同做業時不能隨意更改,更改須要list(xx)轉成列表
經常使用操做:索引、切片、循環、長度、包含
dir:顯示全部方法,只讀.明確的表示 元組裏存儲的數據是不該該被修改的;
list( tuple元組) 變成列表,tuple(list列表) 變成元組
函數
cmp(tuple1, tuple2) # 比較兩個元組元素 len(tuple) # 計算元組元素個數 max(tuple) # 返回元組中元素最大值。 min(tuple) # 返回元組中元素最小值。 tuple(list) # 將列表轉換爲元組。
索引:
元組運算符
與字符串同樣,元組之間可使用 + 號和 * 號進行運算。這就意味着他們能夠組合和複製,運算後會生成一個新的元組
注意:由於括號()既能夠表示tuple,又能夠表示數學公式中的小括號。 因此,若是元組只有1個元素,就必須加一個逗號,防止被看成括號運算
用於標識:存儲多個值的狀況,每一個值都有惟一一個對應的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())
案例
集合-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) #返回輸入的變量類型,若是變量是字典就返回字典類型。