python全棧學習總結二:數字、字符串、列表、元組、字典重要特點及方法
一 python中數據類型
整形:int
字符串:str
列表:list
元組:tuple
字典:dict
布爾值:bool
浮點型:float
一切皆對象,在python中,所有的數據類都是看做對象,故所有的類型名稱都是類,通過類來建立對象,每個類中都有相應的方法,下面我們通過總結上面其中數據類型的特點以及常用的方法,來加深我們這些數據“類”的認識和理解。
二 各種數據類型總結
1 整形int
定義:age = 10
轉換:value = int(‘158‘) 把字符串‘158’轉換成整型158
value = int(‘ab‘,base = 16),以16進制轉換,註意若是不加base =16則默認以十進制轉換
求數字的長度:age.big_length() 使用整型自身的方法輸出所占的長度
2 字符串
定義:用單引號、雙引號個、三個單引號、三個雙引號包括起來的各種數據
name = ‘qiluzhuiche‘
索引:print(name[0]) ---->q
切片:name[0:2] 字符串中的前兩個元素
name[:-1] 字符串中的除最後一個所有元素
name[2:6:1]
叠代:for c in name:
print(c)
可以打印出字符串中的每個字符
註意:字符串一旦創建,則不可修改,一旦修改或拼接,都會重新生成字符串,字符串在內存中是連續分配的一串單元,若是對其修改,則重新開辟一片單元。原先的內存單元將被解釋器釋放掉。
關系運算:‘q’ in name --->True
字符串方法總結:
(1)字符轉換
name = ‘qilvzhuiche is my qq‘ v = name.capitalize() #首字母大寫 print(v) v = name.upper()#字符串全部大寫 print(v) v = name.lower()#字符串字母全部小寫 print(v) v = name.title()#字符串中的字符的首字母大寫 print(v)
(2)字符判斷
name = ‘qilvzhuiche is my qq‘ v = name.endswith(‘qq‘)#字符串是否以qq結尾 print(v) v = name.startswith(‘qi‘)#字符串是否以qi開頭 print(v) name = ‘xiaom ing‘ v = name.isalnum()#判斷字符串是否只包含字符、數字而不包含其他特殊字符 print(v) v = name.isalpha()#判斷字符串是否只包含字符而不包含其他特殊字符 print(v) name = ‘2②二‘ v1 = name.isdecimal()#判斷是否質保函數自發自 v2 = name.isdigit()#判斷是否只包含數字,支持特殊字符② v3 = name.isnumeric()#判斷是否只包含數字,支持中文數字’二‘ print(v1,v2,v3) name = ‘_li2u‘ v = name.isidentifier()#判斷標識符是否定義的字母、數字、下劃線組成 print(v) name = ‘Liu‘ v1 = name.islower()#判斷字符是否都是小寫 v2 = name.isupper()#判斷字符是否都是大寫 v3 = name.istitle()#判斷字符首字符是否大寫 print(v1,v2,v3) name = ‘liu \n‘ v = name.isprintable()#判斷字符串中是否存在不可顯示的字符\n\t\r等 print(v) name= ‘ ‘ v = name.isspace()#判斷字符是否是空格 print(v)
(3)字符串格式化
兩個方法format format_map
test = "I am {name},age = {age}" v = test.format(name = ‘qilvzhuiche‘,age = 30) #通過變量對應的字符來重新設置字符串,註意是重新生成的字符串 v = test.format_map({‘name‘:‘qilvzhuiche‘,‘age‘:30})#通過字典重新格式化字符串 print(v) test = "I am {0},age = {1}" v = test.format( ‘qilvzhuiche‘,30)#通過字符串中的索引重新格式化字符串 print(v)
(4)分割字符串
name = " qilvzhuiche " v1 = name.strip()#去掉字符串兩邊的空白字符 v2 = name.lstrip()#去掉字符串左邊的空白字符 v3 = name.rstrip()#去掉字符串右邊的空白字符 三個方法也可以帶參數指定去掉兩邊的字符,默認去掉空白字符 print(v1+‘\n‘+v2+‘\n‘+v3) v1 = name.partition(‘i‘)#從左邊開始以‘i‘分割字符串,返回元組的形勢保存 print(v1) v2 = name.rpartition(‘i‘)#從右邊開始以’i‘分割字符串,返回元組的形勢保存 print(v2) name = ‘qi lv zhui che‘ v1 = name.split()#從左到右開始以‘i‘為分隔符分割,保存到列表中 print(v1) v2 = name.rsplit()#從右到左開始以’i’為分隔符分割,保存到列表中 默認以空格分割,註意比較partition的異同 print(v2) test = ‘good \n study \n upper‘ v = test.splitlines()#以換行符\n進行分割 print(v)
(5)拼接字符串
""" str.join(元組、列表、字典、字符串) 之後生成的只能是字符串。 所以很多地方很多時候生成了元組、列表、字典後,可以用 join() 來轉化為字符串。 """ v = ‘*‘.join("Hello") #字符串拼接 print(v) v = ‘,‘.join(‘123456789‘) print(v) print(type(v))
(6)統計功能
msg = "good good study,day day up!" num = msg.count(‘good‘) #統計某個字符串含有某個字符的個數 print(num) msg1 = ‘人生苦短,我學python!‘ num = msg1.count(‘我‘) print(num)
(7)字符串排列
msg = ‘I study python!‘ v = msg.center(30,‘*‘)#使字符串居中,剩余位置填充 v = msg.rjust(30,‘*‘) #使字符串靠右對齊,剩余位置填充* v = msg.ljust(30,‘*‘)#使字符串靠做對齊,剩余位置填充* v = msg.zfill(30)#使字符串靠右對齊,剩余位置填充0 print(v)
(8)字符串查找功能
""" find和index都是從左向右查找指定的字符串,不同之處是,若是查找不到, find返回值為-1,index則報異常 rfind和rindex則是從右向左查找,其余功能相同 """ msg = ‘人生苦短,我學python!‘ v1 = msg.find(‘苦‘) v2 = msg.index(‘我‘) print(v1) print(v2) v3 = msg.find("長") print(v3)
(9)字符替換功能
msg = "人生苦短,我學python" v = msg.replace(‘我‘,‘要‘) #在字符串中,用新字符替換舊字符 print(v) msg1 = ‘good good study,Day Day up!‘ v = msg1.replace(‘good‘,‘Good‘) # print(v) v = msg1.swapcase() #小寫轉換為大寫,大寫轉換為小寫 print(v)
(10)根據轉換表轉換字符串
""" Python translate() 方法根據 maketrans() 方法給出的字符映射轉換表轉換字符串中的字符。 使用 maketrans() 方法加 translate() 方法將所有元音字母轉換為指定的數字,並刪除指定字符: """ intab = "aeiou" outtab = "12345" deltab = "thw" trantab1 = str.maketrans(intab,outtab) # 創建字符映射轉換表 trantab2 = str.maketrans(intab,outtab,deltab) #創建字符映射轉換表,並刪除指定字符 test = "this is string example....wow!!!" print(test.translate(trantab1)) print(test.translate(trantab2))
(11)expandtabs應用TAB打印
""" expandtabs指定轉換字符串中的 tab 符號(‘\t‘)轉為空格的字符數,默認的字符數是8。 """ msg = "姓名\t年齡\t性別" msg2 = "騎驢追車\t19\t男" msg3 = "若水三千\t28\t男" v = msg.expandtabs() print(v) v = msg2.expandtabs() print(v) v = msg3.expandtabs() print(v)
(12)字符串編碼和解碼
""" encode() 方法以指定的編碼格式編碼字符串,默認編碼為 ‘utf-8‘。 bytes decode() 方法以指定的編碼格式解碼 bytes 對象,默認編碼為 ‘utf-8‘。 """ #!/usr/bin/python3 S = "人生苦短,我學python"; S_utf8 = S.encode("UTF-8") S_gbk = S.encode("GBK") print(S) print("UTF-8 編碼:", S_utf8) print("GBK 編碼:", S_gbk) print("UTF-8 解碼:", S_utf8.decode(‘UTF-8‘,‘strict‘)) print("GBK 解碼:", S_gbk.decode(‘GBK‘,‘strict‘))
3 列表list總結
定義:ages = [18,23,27,19,21] #用[]表示列表,列表中的各個元素用逗號隔開,元素可以是數字、字符串、布爾值、列表、字典等
索引:列表具有索引功能,可以通過索引取值,ages[1]--->23
切片:列表可以通過切片取值功能,age[1:3]--->23,27
叠代:可以通過for循環取出所有的值,具有遍歷功能。
3.1列表的增刪改查:
增:names =[]
names.append(‘qilvzhuiche‘)#通過列表方法append來增加列表元素
names.insert(0,‘ruoshuisanqian‘)通過列表方法在指定位置增加元素
names.entend([‘yingzaidasi‘,‘yangfanqihang‘,‘zailushang‘])#增加多個元素,註意與append的區別,append當成一個元素添加,extend相當於把兩個列表合並
刪:
del names[2] #通過del刪除指定位置元素
names.pop()#刪除最後一個元素,自動彈出,返回值為彈出的元素
names.pop(2)#刪除指定位置元素,返回值為刪除的元素
names.remove(‘yangfanqihang‘)#移除指定名稱的元素
改:
names[1] = ‘weinidengdai‘ #修改指定位置的元素
查:
‘zailushang’ in names #判斷值是否在列表中
‘weinidengdai‘ not in names #判斷值是否不在列表中
names.count(‘zailushang‘)#通過查詢列表元素出現的次數,判斷是否存在
name.index(‘zailushang‘,0,len(names))#通過查詢列表出現的位置判斷元素是否存在
names = [] #增 names.append(‘qilvzhuiche‘) names.insert(0,‘ruoshuisanqian‘) name2 = [‘yingzaidasi‘,‘yangfangqihang‘,‘zailushang‘] names.extend(name2) print(names) #s刪 names.pop() names.pop(0) del names[0] names.remove(‘yingzaidasi‘) print(names) #改 names[0] = ‘zailushang‘ print(names) #查 v = ‘zailushang‘ in names print(v) v = ‘yangfanqishang‘ not in names print(v) v = names.count(‘zailushang‘) print(v) v = names.index(‘yangfanqihang‘)#當所查找元素不存在是,會引起異常 print(v)View Code
3.2列表的排序
ages = [23,24,19,27,21,31] v = ages.sort() #sort方法直接對列表進行排序,沒有返回值 print(v) print(ages) ages = [23,24,19,27,21,31] v = sorted(ages) #sorted函數對列表重新排序後以返回值輸出, print(v) print(ages) ages = [23,24,19,27,21,31] v = ages.sort(reverse=True) #sort方法直接對列表進行排序,reverse=True時,默認倒序排列 print(v) print(ages) ages = [23,24,19,27,21,31] v = ages.reverse() #reverse方法是通過從大到小排列列表,無返回值,直接對列表操作。 print(v) print(ages)
3.3 列表常用其他方法
names.clear() #對列表進行清空
names.copy()#對列表進行軟拷貝
len(names)#求列表的長度
4 元組tuple總結
定義:gender = (‘man‘,‘woman‘,‘none‘) #元組用小括號定義,中間用逗號隔開,至少要含有一個逗號,表示元組.
特點:元組的元素不可以被修改,增加、刪除等,只能整體修改。元組的一級元素不可修改。
訪問:可以索引訪問,也可以切片訪問。
叠代:可以for循環遍歷
方法:count()#統計 index:查詢元素位置
5 字典dict總結
定義:infor = {‘name‘:‘qilvzhuiche‘,‘sex‘:‘man‘,‘age‘:18},字典用大括號來包含元素,還有鍵值對
特點:(1)字典的值value可以是任何值
(2)字典的鍵key可以是:數字int、字符串str、布爾值bool、元組tuple。
(3)字典是無序的
(4)字典可以叠代,用for循環遍歷
(5)字典支持通過鍵來索引查找
5.1字典的增刪改查:
infor = {‘name‘:‘qilvzhuiche‘,‘sex‘:‘man‘,‘age‘:18,‘job‘:‘computer‘} #增 infor[‘hobby‘] = ‘play‘ #刪 del infor[‘sex‘] v = infor.pop(‘hobby‘) print(v) #改 infor[‘age‘] = 19 #查 v= infor.get(‘age‘) print(infor) print(v)
5.2字典的循環遍歷(叠代)
infor = {‘name‘:‘qilvzhuiche‘,‘sex‘:‘man‘,‘age‘:18,‘job‘:‘computer‘} for key,value in infor.items(): print("鍵:%s 值:%s"%(key,value)) for key in infor.keys(): print("鍵:%s"%key) for value in infor.values(): print("值:%s"%value)
5.3 字典的其它方法
infor = {‘name‘:‘qilvzhuiche‘,‘sex‘:‘man‘,‘age‘:18,‘job‘:‘computer‘} info1 = infor.copy()#字典拷貝 del infor[‘sex‘] print(infor) print(info1) v = infor.popitem() #隨機刪除一個鍵值對 print(v) v = infor.clear() #清空字典 print(v) print(infor) infor.setdefault(‘hobby‘,‘paly‘)#設置鍵值對,默認為None infor.update({‘name‘:‘ruoshuisanqian‘,‘gender‘:‘man‘,‘age‘:‘28‘}) print(infor) seq = (‘Google‘, ‘Runoob‘, ‘Taobao‘) dict1 = dict.fromkeys(seq) #字典的靜態方法運用 print("新字典為 : %s" % str(dict1)) dict = dict.fromkeys(seq, 10) print ("新字典為 : %s" % str(dict1))
6 集合set總結
定義:s = {1,3,6,8,9}
特點:不同元素、無序、不可變類型、可哈希的值
叠代:可以for循環遍歷
判斷元素是否屬於集合的方法?in,not in
通過創建、轉換集合可以去除重復的元素!在這方面有重要的應用!
6.1集合的基本方法
#set
s = {1,2,3,4,5,6,7,9}
s.add(0) #添加元素
s.add(10)
s1 = s.copy()
#s.clear()
s.pop()
s.remove(5)
print(s)
print(type(s))
print(s1)
s.discard(12) #移除沒有的元素 不會報錯
#s.remove(11) #移除沒有的元素,就報錯
6.2 集合的重要方法
s1 = {1,2,3,4,5,6} s2 = {5,6,7,8,9} #求交集 v1 = s1.intersection(s2) v2 = s1 & s2 #求並集 v1 = s1.union(s2) v2 = s1 | s2 #求差集 v1 = s1.difference(s2) v2 = s1 - s2 #求交叉補集 去掉兩個集合公共部分的合集 v1 = s1.symmetric_difference(s2) v2 = s1 ^ s2 #集合更新 v1 = s1.update(s2) v2 = s2.update(s1) print(v1,v2) #update方法,直接更新原集合,沒有返回值 print(s1,s2) """ //更新原先集合 s1.difference_update() s1.intersection_update() s1.symmetric_difference_update() """ #求是否是子集 s3 = {5,6} v = s1.isdisjoint(s2) #求是否有交集 沒有返回True 有返回False v = s3.issubset(s1) #s3是否S1的子集? v2 = s3 <= s1 v = s2.issuperset(s3) #s2是否S3的父集? v2 = s1>= s3 print(v,v2)
python全棧學習總結二:數字、字符串、列表、元組、字典重要特點及方法