1. 程式人生 > >python全棧學習總結二:數字、字符串、列表、元組、字典重要特點及方法

python全棧學習總結二:數字、字符串、列表、元組、字典重要特點及方法

info ted 填充 tde 拼接字符串 enc 支持中文 display sort

一 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全棧學習總結二:數字、字符串、列表、元組、字典重要特點及方法