基础数据类型补充以及二次编码
一.基础数据类型补充
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")) #解码 # 以什么编码集(密码本)进行编码就要用什么编码集(密码本)解码
来源:https://www.cnblogs.com/tutougold/p/11178657.html