3.9各類型數據方法補充,轉換,分類,編碼,坑中菜 3.9.1數據類型方法補充 1.str:不可變 補充方法 1. s1.capitalize():首字母大寫 2. s1.title(): 每個單詞首字母大寫 3. s1.swapcase():大小寫反轉 4. s1.center():居中 填充 5 ...
3.9各類型數據方法補充,轉換,分類,編碼,坑中菜
3.9.1數據類型方法補充
1.str:不可變
補充方法
s1.capitalize():首字母大寫
s1 = "alex" s2 = s1.capitalize() print(s1)
s1.title(): 每個單詞首字母大寫
s1 = "alex wusir" print(s1.title())
s1.swapcase():大小寫反轉
s1 = "AlEx" print(s1.swapcase())
s1.center():居中 -- 填充
s1 = "alex" print(s1.center(20,"-"))
s1.find()查找,從左向右,只查找一個,不存在返回‘-1’
s1.index():查找不存在的報錯
#兩種均返回第一次找到的下標 s1 = "alex" print(s1.find("a")) print(s1.index('e'))
拼接'_'.join(s1)(列表中必須全是可迭代對象)
s1 = "al3x" print("_.jion(s1)")
2.list:
2.1定義方式:list("123")(可迭代)
2.2‘+’ ‘*’ 開闢新空間
2.3補充其他方法:
list1.sort()排序(升序)
降序
- list1.reverse()(反轉)
- list1.sort(reverse=True)
list1 = [1,12,5,6,1,63,,4,8,2,1,9] list1.sort()#1.升序 print(list1) list1.reverse()#2.反轉 print(list1) list1.sort(reverse=True)#降序 print(list1)
3.tuple:
tu = ("12")#數據類型是()中數據本身的類型
print(type(tu))
tu = (1,)
print(tu)
元組可以 '+', '*',不可變公用,可變也公用
4.dict
定義:print(dict(k1=1,k2=2))
隨機刪除:popitem
dict1 = {'k1':1,'k2':2} dict1.popitem() print(dict1) print(dict1.popitem())#返回被刪除的鍵值對,官方說隨機刪除,但是實際是預設刪除最後一個(python3.6)
dict1.formkeys():批量添加(可迭代的鍵,共用的值)
dict1 = {} dict1 = dict1.fromkeys("123",[12])#批量添加鍵值對,需要字典在前面接著 dict1 = dict.fromkeys("123",[12])#也可以用dict. print(dict1) #批量添加必須有字典在前面接著
5.set
set() -- 空集合
{} -- 空字典
定義集合
set('alex')#迭代添加
print(set('alex'))
6.bool
bool:-->False
1.False
2.數字:0
3.字元串:""
4.列表:[]
5.元組:()
6.字典:{}
7.集合:set()
8.其他:None
7.格式化
1.%s
2.f
3.s.format()#填充
#按照順序位置填充
s1 = "alex{},{},{}"
print(s.format(1,2,3)
#按照索引進行填充
s1 = "alex{2},{0},{1}"
print(name.format('a','b','c'))
#按照關鍵字填充
s1 = "alex{a},{b},{c}"
print(name.format(a = 1, c = 3, b = 21))
3.9.2數據之間轉換
#str --> list
str1 = "alex"
list1 = str1.split()
#list --> str
list1 = ['1','2','3']
str1 = ''.join(list1)
#dict --> str
dict1 = {'1':1}
str1 = str(dic)
print(str(dic),type(str(dic))
#str --> dict直轉是錯誤的,需要切片添加
print(dict("{1:1}"))#錯誤
3.9.3數據類型細分
- 可變:list,dict,set
- 不可變:int,bool,str,tuple
- 有序:list,tuple,str,int,bool
- 無序:dict,set
- 取值方式:
- 索引:str,list,tuple
- 直接:set,int,bool
- 鍵:dict
3.9.4坑中菜
- 刪除list正確應從後向前刪
lst = [1,2]
for i in lst:
lst.append(3)
print(lst)#死迴圈
lst = [1,2,3,4]
count = 0
for i in lst:
count += 1
lst.pop()
#這用方法只迴圈了兩次,輸出count一目瞭然
#lst.pop(0)
print(i)
#這種方法也只迴圈了兩次,輸出i一目瞭然(i在for迴圈中是遞增的。)
#lst.remove(i)
print(i)
#這種方法和上一種差不多
print(lst)
print(count)
#成功1.
lst = [1,2,3,4]
for i in range(len(lst)):
lst.pop()
print(lst)
#成功2.
lst = [1,2,3,4,5,6]
lst1 = lst.copy()
for i in lst1:
lst.remove(i)
print(lst)
刪除字典坑:
#字典(和集合)在迭代的過程不能更改鍵值對的數量,可改可查,可同時增刪。 dic = dict.fromkey("123456",1) for i in dic: dic.pop(i) print(dic) #正確: dic = dict.fromkey("123456",1) dict1 = dic.copy for i in dict1: dic.pop(i) print(dic) #正確:同時增刪 dic = dict.fromkeys("123",1) print(dic) for i in dic: dic.pop(i) dic.setdefault(i,i) print(dic)
3.9.5二次編碼:
- 密碼本:
- ascii -- 沒有中文
- gbk -- 英文 8b(位) 1b(位元組) 中文 16b (位) 2b(位元組)
- unicode -- 英文 16b 2b 中文 32b 4b
- utf -8 -- 英文 8b 1b 歐洲 16b 2b 亞洲 24b 3b
name = "alex"
print(name.encode("utf-8"))#編碼
print(name.encode("gbk"))
print(name.encode("shift-jis"))
name = "你好啊"
s1 = name.encode("utf-8")
print(name.encode("utf-8"))#編碼
print(name.decode("utf-8"))#解碼
#用什麼編碼,就用什麼解碼
print(name.encode("gbk"))
print(name.encode("shift-jis"))#日文,不支持中文