數據類型的內置方法 什麼是數據類型的內置方法? ==數據類型自帶的操作方法或功能== 調用數據類型的內置的方法的方式是: ==句點符== 數據類型.方法名() eg: 變數名.方法名() 數據值.方法名() 1.整型相關操作方法 類型轉換 int(待轉換的數據類型) 1.浮點型可以轉整型 ' ...
數據類型的內置方法
什麼是數據類型的內置方法?
數據類型自帶的操作方法或功能
調用數據類型的內置的方法的方式是:
句點符
數據類型.方法名()
eg:
變數名.方法名()
數據值.方法名()
1.整型相關操作方法
-
類型轉換
int(待轉換的數據類型)
1.浮點型可以轉整型 '只要小數點前面的整數 不做四捨五入' 2.字元串可以轉整型 '但是字元串內部必須是整數才可以' 3.布爾值的使用 int(True) #1 int(False) #0 4.其他類型轉整型會報錯
-
進位數轉換
十進位轉其他進位: 十進位轉二進位>>bin() 十進位轉八進位>>oct() 十進位轉十六進位>>hex() ''' 0b >>> 二進位標識 0o >>> 八進位標識 0x >>> 十六進位標識 數字開頭沒有任何標識的激素hi十進位 ''' 其他進位轉十進位 '''自動轉''' 二進位轉十進位>>int(0b0101110101) 二進位轉八進位>>int(0o155) 二進位轉十六進位>>int(0x64) '''手動轉''' 二進位轉十進位>>int('0b0101110101',2) 八進位轉十進位>>int('0o155',8) 十六進位 轉十進位>>int('0x64',16)
2.浮點型相關操作方法
-
類型轉換
float(待轉換的數據)
1.整型可以轉成浮點型 '後面跟一個小數點1.0' 2.字元串可以轉成浮點型 '但是字元串內必須是數字(整數或者小數)' 3.布爾值的使用 int(True) #1.0 int(False) #0.0 4.其他類型轉浮點型會報錯
-
數學運算邏輯容易出錯
a = 23.00 b = 1.2 c = a * b print(c) # 27.599999999999998 ''' 由以上舉例得出:python對數字運算精確度很低,容易出錯! 如需要精準的計算需藉助其他模塊! '''
3.字元串相關操作方法
-
類型轉換
str(待轉換的數據)
1.所有的數據類型都可以轉換成字元串類型 2.給所有數據類型前後加引號也可以轉換成字元串類型
-
常用內置方法
-
1.索引取值(單個字元串)
1.索引取值是從0開始的 顧頭不顧尾 2.超出索引的取值範圍就會報錯 3.索引支持負數 [-1] 就是取最後一個 s1 = 'abcde' print(s1[0]) # a print(s1[-1]) # e
-
2.切片取值(多個字元)
l1 = [1,2,3,4,5,6,7] print(l1[:]) # [1,2,3,4,5,6,7]全要 print(l1[:3]) #[1,2,3]要前3個 print(l1[2:]) #[3,4,5,6,7]前2個不要剩下的全要 print(l1[2:5])#[3,4,5]要索引2-索引5之間的 索引顧頭不顧尾 所以最後一位不拿 print(l1[-3:-1])#[5,6] 從後往前拿
-
3.修改切片間隔
s1 = 'abcde' print(s1[0:5:1]) # abcde 取索引0~索引4的值且間隔1 print(s1[0:5:2]) # ace 取索引0~索引4的值且間隔2 print(s1[::2]) # ace 取所有值且間隔2
-
4.統計字元次數
len(待統計的變數名或數據值)
s1 = 'abcde' print(len(s1)) # 5
-
5.移除首尾指定字元
strip(想要移除的符號)
name = '$張三$' 1)移除首尾所有指定字元 print(name.strip('$')) # 張三 2)移除首指定字元 print(name.lstrip('$')) # 張三$ 3)移除尾指定字元 print(name.rstrip('$')) # $張三 4)括弧內不寫預設移除空格 print(name.strip()) # 張三 '常用於獲取用戶輸入移除用戶不小心打的空格'
-
6.切割字元串中的指定字元
split('')當字元串中有多個重覆字元分割不同數據時,可切割該指定字元以列表的形式顯示
a = 'aaa|bbb|ccc' 1)切割所有指定字元 print(a.split('|')) # ['aaa', 'bbb', 'ccc'] #註意:此處可以用【解壓賦值】依次賦值給不同變數名! 2)從左往右切指定個數 print(a.lsplit('|',maxsplit=1)) #['aaa', 'bbb|ccc'] 3)從右往左切指定個數 print(a.rsplit('|',maxsplit=1)) #['aaa|bbb', 'ccc']
-
7.字元串大小寫相關
uppre() lower() isupper() islower()常用於驗證碼
a = 'aHGdb' 1.將字元串全部轉成大小寫 print(a.upper()) print(a.lower()) 2.判斷當前字元串是否為純大小寫 結果是布爾值 print(a.isupper()) print(a.islower())
-
8.字元串格式化輸出
方式1):等價於%s 沒優勢 lx = '我的名字是{},我的年齡是{}' print(lx.format('張三',18)) #結果為:我的名字是張三,我的年齡是18 方式2):支持索引取值,可以重覆使用 lx = '我的名字是{0},我的年齡是{1}{0}{1}' print(lx.format('張三',18)) #結果為:我的名字是張三,我的年齡是18張三18 方式3):支持關鍵字取值(按K取值),可重覆使用 lx = '名字是{name}{name}年齡是{age}' print(lx.format(name='張三',age=18)) #結果為:名字是張三張三年齡是18 方法4):最常用!!!***************** name = '張三' age = 18 print(f'名字是{name}年齡是{age}') #結果為:名字是張三年齡是18
-
9.判斷字元串中是否是純數字
isdigit()判斷是否為純數字 常用於用戶輸入時校驗 結果是布爾值
print('123'.isdigit()) # True print('123a'.isdigit()) # False
-
-
其他內置方法
-
1.替換字元串中指定內容
replace()括弧內寫被替換的字元與 想要替換的字元
a='a a a b b b' 1)從左往右替換所有指定內容 print(a.replace('a','c')) #結果為:c c c b b b 2)從左往右替換指定個數的內容 print(a.replace('a','c',1)) #結果為:c a a b b b
-
2.字元串的拼接
'' . join([a,b]) 引號中間可以加想要拼接的字元 也可以不寫 a,b分別是想要拼接起來的數據
a='張' b='三' 方式1):直接用+號,但是易占用較多記憶體 print(a+b) # 張三 方式2):直接*該字元串實現拼接多個 print(a*2) # 張張 方式3):建議使用join方法!切可以在拼接中插入指定字元 print(''.join([a,b])) # 張三 print('|'.join([a,b])) # 張|三
-
3.統計指定字元出現的次數
count()統計個數
a='aabcdef' print(a.count('a')) #2 '''統計a出現的次數'''
-
4.判斷字元串開頭或者結尾
startswith()判斷開頭是否為某個值
endswith()判斷結尾是否為某個值
a='hello' #判開頭是否是'he' print(a.startswith('he')) # True #判斷結尾是否是'lo' print(a.endswith('lo')) # True
-
5..查找某個字元對應索引值
index() 存在則返回索引值 如果有相同的 則只會返回從左邊數第一個查到的某個字元的索引值 不存在則報錯
find()存在則返回索引值 如果有相同的 則只會返回從左邊數第一個查到的某個字元的索引值 不存在返回-1
a='helloh' #獲取'h'的索引值 不存在則報錯 print(a.index('h')) # 0 #獲取'a'的索引值 不存在則返回-1 print(a.find('a')) # -1
-
6.正文相關轉換首字母大寫
title() 將所有字元串的首字母大寫
capitalize() 將第一個字元串的首字母大寫
a = 'my name is zhangsan' 1)將所有單詞的首字母大寫 print(a.title()) #結果為:My Name Is Zhangsan 2)將字元串第一個字母大寫 print(a.capitalize()) #結果為:My name is zhangsan
-
4.列表相關操作方法
-
類型轉換
list(其他數據類型)
能夠被for迴圈的數據都可以轉換成列表
支持for迴圈的數據類型有:列表、字典(只有k參與)、元組、集合、字元串
字元串、字典、元組、集合: print(list('123')) # ['1', '2', '3'] print(list({'name':'張三','age':'18'})) # ['name', 'age'] print(list((1,2,3))) # [1, 2, 3] print(list({1,2,3})) # [1, 2, 3]
-
常用內置方法
-
1.索引取值(單個數據值)
''' 1.索引值是從0開始(顧頭不顧尾) 2.超出索引範圍會直接報錯 3.索引可跟負數,[-1]為取最後一個 ''' l1 = [1, 2, 3] print(l1[0]) # 1 print(l1[-1]) # 3
-
2.切片取值(多個數據值)
l1 = [1,2,3,4,5,6,7] print(l1[:]) # [1,2,3,4,5,6,7]全要 print(l1[:3]) #[1,2,3]要前3個 print(l1[2:]) #[3,4,5,6,7]前2個不要剩下的全要 print(l1[2:5])#[3,4,5]要索引2-索引5之間的 索引顧頭不顧尾 所以最後一位不拿 print(l1[-3:-1])#[5,6] 從後往前拿
-
3.修改切片間隔
l1 = [1,2,3,4,5] print(l1[0:5:1]) # [1,2,3,4,5] 取索引0~索引4的值且間隔1 print(l1[0:5:2]) # [1,3,5] 取索引0~索引4的值且間隔2 print(l1[::2]) # [1,3,5] 取所有值且間隔2
-
4.統計列表數據值個數
len() 統計數據值個數
l1 = [1,2,3,4,5] print(len(l1)) # 5
-
5.修改數據值
通過索引找出想要修改的數據值 直接賦一個新的數據值
l1 = [1,2,3,4,5] l1[0] = 'z' print(l1) #結果為:['z',2,3,4,5]
-
6.添加數據值
append()尾部追加
insert()括弧內跟索引 與 想要插入的數據值
extend()合併兩個列表
1)尾部追加數據值 l1 = [1, 2, 3, 4, 5] l1.append('zzz') print(l1) #結果為:[1, 2, 3, 4, 5, 'zzz'] 2)任意位置插入數據值(在索引幾的位置插入什麼數據) l1 = [1, 2, 3, 4, 5] l1.insert(1,'zzz') print(l1) #結果為:[1, 'zzz', 2, 3, 4, 5] 3)擴展列表、合併列表 l1=[1,2,3] l2=[4,5,6] 方式一:不建議使用 print(l1+l2) #結果為:[1,2,3,4,5,6] 方式二:底層是用for+append實現的 l1.extend(l2) print(l1) #結果為:[1,2,3,4,5,6]
-
7.刪除數據
del() eg:del l1[0] 刪除列表1中的索引值為0的數據值
remove()刪除指定數據
pop()彈出後可以賦給一個變數名 然後刪除 也可以接著用
l1 = [1,2,3,4,5] 1)通用刪除 del:(刪除某個索引對應的值) del l1[0] print(l1) #結果為:[2, 3, 4, 5] 2)指定刪除 remove:(徹底刪除指定的數據值) l1.remove(2) print(l1) #結果為:[1, 3, 4, 5] 3)取出後刪除 pop:(可以把取出的值賦值給一個變數) '括弧內不寫預設最後一個,0代表第一個,1代表第二個' l1.pop() print(l1) #結果為:[1, 2, 3, 4] a = l1.pop() print(a) #結果為:5 pop常用於觀展人數中,xxx退出觀戰
-
8.查看數據值對應的索引值
index() 查看某個數據的索引值
l1=[1,2,3,4] print(l1.index(1)) #結果為:0
-
9.統計某個數據值出現的次數
count()統計數據值出現的次數
l1=[1,1,2,3,4,5] print(l1.count(1)) #結果為:2
-
10.數據值排序
sort()升序
sort(revrese = True)降序
l1=[4,2,5,1,2,3] 1)升序: l1.sort() print(l1) #結果為:[1, 2, 2, 3, 4, 5] 2)降序: l1.sort(reverse=True) print(l1) #結果為:[5, 4, 3, 2, 2, 1]
-
11.反轉列表數據值順序
reverse()將列表反轉
跟升序降序不同
l1=[4,2,5,1,2,3] l1.reverse() print(l1) #結果為:[3, 2, 1, 5, 2, 4]
-
12.兩個列表比較
a = [99,11] b = [11,22,33] print(a > b) #結果為:True l1 = ['a','b'] l2 = ['A','B'] print(l1 > l2) #結果為True ''' 1.兩個列表在比較大小時,是按照索引0來互相比較。 2.不同數據類型之間無法比較 3.a比A大的原因是因為中間涉及到字元編碼。a=97 A=65 '''
-
5.字典相關操作方法
-
類型轉換
dict(其他數據類型)
字典一般是直接定義 不類型轉換
-
常用內置方法
-
1.字典取值
按k取值
.get()常用來取字典中的k鍵
按k取值 k不存在就會報錯 d = {'name':'張三','age':18} print(d['name']) #結果為:張三 print(d['xxx']) #結果為:會報錯 get取值 k不存在時返回none d = {'name':'張三','age':18} print(d.get('name')) #結果為:張三 print(d.get('xxx')) #結果為:None
-
2.修改字典v值
直接按k鍵 = 想要修改的新數據值
d = {'name':'張三','age':18} d['name']='李四' print(d) #結果為:{'name': '李四', 'age': 18}
-
3.新增鍵值對
當k存在時 修改k對應的v值
當k不存在時 新增鍵值對
d = {'name':'張三','age':18} d['pwd']=123 print(d) #結果為:{'name': '張三', 'age': 18, 'pwd': 123}
-
4.刪除數據
del 直接刪除
pop() 可以給彈出的數據值綁定一個變數名 接著用
d = {'name':'張三','age':18} 1)del d['name'] #刪除name的鍵值對 2)a = d.pop('name') print(a)#列印出來的就是刪除掉的V值 print(d)#列印出來的就是刪除後的列表
-
5.統計字典中的鍵值對個數
len()統計字典中鍵值對的個數
d = {'name':'張三','age':18} print(len(d)) #結果為:2
-
6.獲取所有鍵、值、鍵值對數據
keys() 獲取所有鍵 k
values()獲取所有值 v
items()獲所有鍵值對 k:v 支持for迴圈
d = {'name':'張三','age':18} d = {'name':'張三','age':18} 獲取所有【鍵】 print(d.keys()) # dict_keys(['name', 'age']) 獲取所有【值】 print(d.values()) # dict_values(['jason', 18]) 獲取所有【鍵值對】(組成列表套元組形式) print(d.items()) # dict_items([('name', 'jason'), ('age', 18)]) items獲取的值 支持for迴圈: for k,v in d.items(): print(f'{k}:{v}') #結果為: #name:jason #age:18
-
7.快速構造字典
dict.formkeys( [ ' ' , ' ' ],' ' )
快速生成一個值相同的字典 '第一個列表裡的數據值當作鍵,第二個是公共的數據值(所有鍵的值都相同)' d1=dict.fromkeys(['name','pwd','hobby'],123) print(d1) #結果為:{'name': 123, 'pwd': 123, 'hobby': 123} 後期可以再單個修改對應的值數據 筆試題: res=dict.fromkeys(['name','pwd'],[]) print(res)#{'name': [], 'pwd': []} res['name'].append('jason') res['pwd'].append(123) print(res)#{'name': ['jason', 123], 'pwd': ['jason', 123]} '當第二個公共數據值是可變類型的 通過任何鍵調用內置方法去修改值時會影響所有的鍵'
-
8.從列表中取出最後的鍵值對
popitem()
d={'name':'jason','age':18,'pwd':'123'} print(d.popitem()) # 也可以賦值給一個變數名,列印變數名 #列印第一次結果為:('pwd', '123') print(d.popitem()) #列印第二次結果為:('age', 18) print(d) #此時列印字典的結果為:{'name': 'jason'} 當沒有鍵值對可列印時會報錯
-
6.元組相關操作方法
-
類型轉換
tuple(其他類型數據)
支持for迴圈的數據類型都支持轉成元組:列表、字典、字元串、集合
print(tuple([1,2,3])) # (1,2,3) print(tuple({'name':'張'})) # ('name',) print(tuple((1,2,3))) # (1,2,3) print(tuple({1,2,3})) # (1,2,3)
-
常用內置方法
-
註意:
註意: 1.元組內如果只有一個數據值,結尾要跟逗號 t1 = () #空元組 t1 = (1,) 2.元組內索引綁定的記憶體地址不能被修改#除非是可變類型[元組裡面的列表就可以增加或者刪除] t1 = (1, 2, 3, [1, 2]) # t1.append(5) #結果會報錯! t1[-1].append(5) print(t1) # (1, 2, 3, [1, 2, 5]) 3.元組不能新增或刪除數據#除非是可變類型
-
1.索引取值
t1=(1,2,3,4,5) print(t1[0]) # 1 print(t1[-1]) # 5
-
2.切片操作
t1=(1,2,3,4,5) print(t1[:]) # (1,2,3,4,5) 取所有值 print(t1[:3]) # (1,2,3) 取索引0~索引2的值 print(t1[1:3]) # (2,3) 取索引1~索引2的值 print(t1[-3:-1]) # (3,4) 取倒數第二(包含)~倒數第一(不包含)的值
-
3.切片間隔/方向
t1=(1,2,3,4,5,6) print(t1[0:5:1]) # (1,2,3,4,5) 取索引0~索引4的值且間隔1 print(t1[0:5:2]) # (1,3,5) 取索引0~索引4的值且間隔2 print(t1[::2]) # (1,3,5) 取所有值且間隔2 print(t1[::-1]) # (6,5,4,3,2,1) 取所有值並改變字元串方向(後進先出)
-
4.統計數據值個數
len()想要統計的數據
t1=(1,2,3,4,5,6) print(len(t1)) # 6
-
5.統計某個數據值出現的次數
count()
t1=(1,2,3,4,5,6) print(t1.count(2)) # 1
-
6.統計元組內對應索引值
index()
t1=(1,2,3,4,5,6) print(t1.index(1)) # 0
-
7.集合相關操作方法
-
類型轉換
set(其他類型數據)
print(set('abc')) # {'a','b','c'} 字元串 print(set([1,2,3])) # {1, 2, 3} 列表 print(set({'name':'jason'})) # {'name'} 字典 print(set((1,2,3))) # {1, 2, 3} 元組 整型、浮點型、布爾值會報錯 註意: 1.集合里的'數據值'必須是不可變類型(整型、浮點型、字元串、元組) 2.集合內是無序的 沒有索引概念 3.如果想單獨取數據值應該轉成列表去取。
-
常用內置方法
集合不常用 只在去重、關係運算時才會考慮使用集合
-
1.去重
先轉成列表在轉成集合
eg:把以下列表去重 l1=[1,2,3,2,1,3] s1=set(l1) #把該列表轉成集合 l1=list(s1) #把該集合再轉回列表 print(l1) #結果為:[1, 2, 3] '集合的去重是無序的,有時候無法保留原先順序'
-
2.關係運算
常用做差異校驗 eg:模擬兩個人的好友 f1 = {'jason','tony','oscar','jerry'} f2 = {'kevin','jerry','jason','lili'} 1.求f1和f2的共同好友 print(f1 & f2) #{'jason','jerry'} 2.求是f1單獨認識的好友 print(f1 - f2)#{'oscar','tony'} 3.求f1和f2所有的好友 print(f1 | f2)#{'oscar','jason','kevin','lili','tony','jerry'} 4.求f1和f2各自單獨認識的好友 print(f1 ^ f2)#{'lili','oscar','tony','kevin'} 5.父集、子集 print(f1 < f2)#false print(f1 > f2)#false '集合在做父子比較時是依照誰包含誰來判斷'
-
可變類型與不可變類型
可變類型 | 不可變類型 |
---|---|
字典、列表、集合 | 整型、浮點型、字元串、布爾值 |
值改變、記憶體地址不變(改自身) | 值改變、記憶體地址也變(產生一個新的結果) |
1.不可變類型
#值改變,記憶體地址也變(產生新的結果)
s1='$$jason$$'
s1.strip('$')
'由於產生的是新的結果,所以列印原字元串沒有變化'
print(s1)
#結果為:$$jason$$
'因為產生了新的結果,所以可以列印出來(可直接列印出來,也可以賦值一個變數名接收後列印)''
print(s1.strip('$'))
#結果為:jason
2.可變類型
#值改變,記憶體地址不變(改自身)
l1=[11,22,33]
l1.append('z')
'由於改的是自身 所以列印原本的列表就是修改後的列表'
print(l1)
#結果為:[11,22,33,'z']
'因為沒有產生新的結果,所以列印出來的是None'
print(l1.append('z'))
#結果為:None