基礎數據類型補充以及二次編碼 一.基礎數據類型補充 1.字元串(str) 首字母大寫 每個單詞首字母大寫 大小寫反轉 居中 填充 查找(從左向右,之查找一個) 拼接 格式化 2.列表 定義方式 list(可迭代對象) + 元素都是共用的 排序(預設升序) 降序 反轉 面試題 3.元組 4.字典 定義 ...
基礎數據類型補充以及二次編碼
一.基礎數據類型補充
1.字元串(str)
- 首字母大寫
# .capitalize()
name = "meet"
s = name.capitalize()
print(s) #Meet
- 每個單詞首字母大寫
# .title()
name = "meet alex"
s = name.title()
print(s) #Meet Alex
- 大小寫反轉
# .swapcase()
name = "MeeT"
s = name.swapcase()
print(s) #mEEt
- 居中--填充
# .center()
name = "meet"
s = name.center(10,"*")
print(s) #***meet***
- 查找(從左向右,之查找一個)
# .find() .index()
name = "meet"
s = name.find("e")
print(s) #1 #find查找不存在的就返回-1
s = name.index("t")
print(s) #3 #index查找不存在的就報錯
- 拼接
# .join()
name = ["meet","alex"]
s = "_".join(name) #拼接符.join(可迭代對象)
print(s) #meet_alex
- 格式化
1.%s
2.f
3.name.format()
按照索引位置進行填充
name = "alex{},{}"
print(name.format(1,2)) # alex1,2
按照索引值進行填充
name = "alex{1},{0}"
print(name.format("a","b")) #alexb,a
按照關鍵字進行填充
name = "alex{a},{b}"
print(name.format(a=1,b=2)) #alex1,2
2.列表
定義方式 list(可迭代對象) + * 元素都是共用的
- 排序(預設升序)
# lst.sort()
lst = [1,5,3,2,4]
lst.sort()
print(lst) #[1, 2, 3, 4, 5]
- 降序
# lst.sort(reverse=True)
lst = [1,2,3,4,5]
lst.sort(reverse=True)
print(lst) #[5, 4, 3, 2, 1]
- 反轉
# lst.reverse()
lst = [1,2,3,4,5]
lst.reverse()
print(lst) #[5,4,3,2,1]
print(lst::-1) #[5,4,3,2,1]
- 面試題
lst = [[]]
new_lst = lst * 5
new_lst[0].append(10)
print(new_lst) #[[10], [10], [10], [10], [10]]
lst = [1,[]]
new_lst = lst * 5
new_lst[0] = 10
print(new_lst) #[10, [], 1, [], 1, [], 1, [], 1, []]
lst = [1,[]]
new_lst = lst * 5
new_lst[1] = 10
print(new_lst) #[1, 10, 1, [], 1, [], 1, [], 1, []]
lst = [[]]
new_lst = lst * 5
new_lst[0].append(10)
print(new_lst) #[[10], [10], [10], [10], [10]]
合併列表
方式一:
lst = [1,2,3]
lst1 = [4,5,6]
lst.extend(lst1)
print(lst) #[1,2,3,4,5,6]
方式二:
lst = [1,2,3]
lst1 = [4,5,6]
print(lst + lst1) #[1,2,3,4,5,6]
3.元組
tu = ("1") ()中的數據類型是數據本身
tu = (1,) --元組
元組可以 + * 不可變的共用,可變的也共用
4.字典
定義一個字典: dict(k = 1,k1 = 2)
# 隨機刪除
dic.popitem()
print(dic.popitem()) --返回的是被刪除的鍵值對
# 批量添加鍵值對 鍵是可迭代對象,值是共用的
dict.fromkeys()
dic = {}
dic.fromkeys("123",[23])
print(dic) # {}
dic = {}
print(dic.fromkeys("123",[23]))
#{'1': [23], '2': [23], '3': [23]}
5.集合
空集合-- set()
空字典--{}
定義集合: set("alex") #{'a', 'e', 'l', 'x'} 迭代添加的
6.布爾值
False:
數字:0
字元串:""
列表:[]
元組:()
字典:{}
集合:()
其他:None
二.數據類型之間的轉換
# 元組轉列表(tuple --> list)
list(tuple)
# 列表轉元組(list --> tuple)
tuple(list)
#字元串轉列表(str --> list)
s = "abc"
s1 = s.split(" ")
print(s1) #['abc']
#列表轉字元串(list --> str)
s = ["abc"]
print("".join(s)) #abc
#字典轉字元串(dict --> str)
dic = {"a":1,"b":2}
print(str(dic)) #{'a': 1, 'b': 2}
#集合轉列表(set --> list)
set = {"a",1}
print(list(set)) #[1, 'a']
#列表轉集合(list --> set)
lst = [1,2,3]
print(set(lst)) #{1,2,3}
python數據類型
可變:list,dict,set
不可變:int,bool,str,tuple
有序:list,tuple,str,int,bool
無序:dict,set
取值方式:
索引取值:str,list,tuple
直接取值:set,int,bool
用鍵取值:dict
三.會遇到的坑
#列表刪除:從後向前刪除
# 創建一個新的列表,刪除舊的列表
#字典刪除:迴圈的時候不能改變源數據的大小(可以改變值)
# 創建一個新的字典,刪除舊的字典
#集合刪除:迴圈的時候不能改變源數據的大小
lst = [1,2]
for i in lst:
lst.append(3)
print(lst) #死迴圈
刪除列表的坑:
lst = [1,2,3,4]
for i in lst:
lst.pop()
print(lst) #[1,2]
lst = [1,2,3,4]
for i in lst:
lst.pop(0)
print(lst) #[3,4]
lst = [1,2,3,4]
for i in lst:
lst.remove(i)
print(lst) #[2,4]
成功刪除的方式:
lst = [1,2,3,4]
for i in range(len(lst)):
lst.pop()
print(lst) #[]
lst = [1,2,3,4]
for i in range(len(lst)-1,-1,-1)
del lst[i]
print(lst) #[]
lst = [1,2,3,4]
for i in range(len(lst)):
del lst[-1]
print(lst) #[]
lst = [1,2,3,4]
lst1 = lst.copy()
for i in lst1:
lst.remove(i)
print(lst) #[]
刪除字典的坑: #字典的迭代會改變原來的大小(不能加不能刪)
dic = dict.fromkeys("12345",1)
for i in dic:
dic[i] = "123"
print(dic)
#{'1': '123', '2': '123', '3': '123', '4': '123', '5': '123'}
dic = dict.fromkeys("12345",1)
dic1 =dic.copy()
for i in dic1:
dic.pop(i)
print(dic) #{}
#集合和字典都是迭代的時候不能改變原來的大小
四.二次編碼
ascii --沒有中文
gbk --英文8b(位) 1B(位元組) 中文16b 2B
Unicode -- 英文16b 2B 中文 32b 4B
utf-8 -- 英文8b 1B 歐洲16b 2B 亞洲24b 3B
encode() --編碼 decode() --解碼
name = "你好啊"
s1 = name.encode("utf-8") # 編碼
s2 = s1.decode("utf-8") #解碼
print(s2)
s2 = name.encode("gbk") # 編碼
print(s2.encode("gbk")) #解碼
# 以什麼編碼集(密碼本)進行編碼就要用什麼編碼集(密碼本)解碼