python基础05
内容大纲
- 基础数据类型补充
- 以后会遇到的坑
- 二次编码
1.基础数据类型补充
1.1 字符串(str)
str: 不可变
1.1 首字母大写:
# name = "alex"
# name1 = name.capitalize()
# print(name1)
1.2 每个单词首字母大写
# name = "alex wusir"
# print(name.title())
1.3 大小写反转
# name = "Alex"
# print(name.swapcase())
1.4 居中 -- 填充
# name = "alex"
# print(name.center(20,"-")) #总共20个位置,将name放在中间
1.5 查找 从左向右 只查找一个
# name = "alelx"
# print(name.find("b")) #find查找不存在的返回-1
# print(name.index("b")) #index查找不存在的就报错
1.6 拼接
# name = "al3x"
# print("_".join(name)) ***
1.7 格式化
# 1.%s
# 2.f
# 3.name.format()
# name = "alex{},{},{}"
# print(name.format(1,2,3)) # 按照顺序位置进行填充
# name = "alex{2},{0},{1}"
# print(name.format("a","b","c")) # 按照索引值进行填充
# name = "alex{a},{b},{c}"
# print(name.format(a=1,c=11,b=67)) # 按照关键字进行填充
+ * 开辟新的空间
# name = "alex"
# name1 = "wusir"
# print(id(name))
# print(id(name1))
# print(id(name + name1))
1.2 列表(list)
list:
定义方式:
# list("123")
其他方法:
排序 (升序)
# lst = [1,2,23,234,435,36,23,213421,421,4231,534,65]
# lst.sort()
# print(lst)
排序 (默认升序)
# lst = ["你好","我好"] #根据对应字节对应的大小进行排序
# lst.sort()
# print(lst)
降序
# lst.sort(reverse=True)
# print(lst)
反转
# lst = [1,2,3,4453,5,6,7]
# print(lst[::-1])
# lst.reverse()
# print(lst)
# lst = [1,2,3,4,5123,21345,231123,4,1235,234,123]
# lst.sort()
# lst.reverse()
# print(lst)
面试题:
# lst = [[]]
# new_lst = lst * 5
# new_lst[0].append(10)
# print(new_lst)
# lst = [1,[]]
# new_lst = lst * 5
# new_lst[0] = 10
# print(new_lst)
# lst = [1,[]]
# new_lst = lst * 5
# new_lst[1] = 10
# print(new_lst)
将一个列表添加到另一个列表中
方式一:
# lst.extend(lst1)
# print(lst)
方式二:
# print(lst+lst1)
# new_lst = lst * 5
# print(id(new_lst[0]), id(new_lst[0]))
# lst = [[]]
# new_lst = lst * 5
# new_lst[0].append(10)
# print(new_lst)
1.3 元组(tuple)
tuple:
# tu = ("12") # 数据类型是()中数据本身
# print(type(tu))
# tu = (1,) # (1,)是元组
# print(type(tu))
# 元组 + * 不可变共用,可变也共用
1.4 字典(dict)
dict:
# 定义一个字典:
# print(dict(k=1,k1=2))
随机删除: popitem
# dic = {"key":1,"key2":2,"key3":56}
# print(dic.popitem()) # 返回的是被删除的键值对(键,值)
# print(dic)
# python36 默认删除最后一个
dic = {}
dic.fromkeys("123",[23]) # 批量添加键值对{"1":[23],"2":[23],"3":[23]}
print(dic)
结果:{} 注意:必须给dic.fromkeys("123",[23])重新赋值
# dic = dict.fromkeys("123456789",1) # 批量添加键值对"键是可迭代对象",值 -- 会被共用
# dic["1"] = 18
# print(dic)
1.5 集合(set)
set:
# set() -- 空集合
# {} -- 空字典
# 定义集合:
# set("alex") # 迭代添加的
# print(set("alex"))
1.6 布尔值(bool)
bool: False
# 数字: 0
# 字符串: ""
# 列表:[]
# 元组:()
# 字典:{}
# 集合: set()
# 其他: None
# a = None
# print(bool(a))
1.7 数据类型之间的转换
# list tuple
# tuple list
# str list
# name = "alex" print(name.split())
# list str
# lst = ["1","2","3"] # print(''.join(lst))
# dict -- str
dic = {"1":2}
# print(str(dic),type(str(dic)))
# print(dict("{1:1}")) 错误的 通过分割来进行转换
# set - list
# list - set
1.8 Python的数据类型整理
python数据类型:
# 可变:
# list ,dict ,set
# 不可变:
# int bool str tuple
# 有序:
# list,tuple,str,int,bool
# 无序:
# dict,set
# 取值方式:
# 索引: str list tuple
# 直接: set ,int ,bool
# 键: dict
2.以后会遇到的坑
2.1 删除列表的坑
# 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)
# lst = [1,2,3,4] (错误)
# for i in lst:
# lst.pop(0)
# print(lst)
# lst = [1,2,3,4] (错误)
# for i in lst:
# lst.remove(i)
# print(lst)
成功删除的方式:
# lst = [1,2,3,4,6]
# for i in range(len(lst)):
# lst.pop()
# print(lst)
# lst = [1,2,3,4,6]
# for i in range(len(lst)-1,-1,-1):
# del lst[i]
# print(lst)
# lst = [1,2,3,4,6]
# for i in range(len(lst)):
# del lst[-1]
# print(lst)
# lst = [1,2,3,4,5,6]
# lst1 = lst.copy()
# for i in lst1:
# lst.remove(i)
# print(lst)
2.2 删除字典的坑
删除字典的坑
# dic = dict.fromkeys("12345",1) # 字典的迭代的时候改变了原来的大小(不能加不能删)
# for i in dic:
# dic[i] = "123"
# print(dic)
# dic = dict.fromkeys("12345",1)
# dic1 = dic.copy()
# for i in dic1:
# dic.pop(i)
# print(dic)
# 集合和字典都是迭代的时候不能改变原来的大小
3.二次编码
密码本:
# ascii -- 没有中文
# gbk -- 英文 8b(位) 1B(字节) 中文 16b 2B
# unicode -- 英文16b 2B 中文32b 4B
# utf-8 -- 英文8b 1B 欧洲16b 2B 亚洲24b 3B
name = "你好啊"
s1 = name.encode("utf-8") # 编码 9
print(s1)
# s2 = name.encode("gbk") # 编码 6
# s2 = s1.decode("utf-8") # 解码
# print(s2.encode("gbk"))
以什么编码集(密码本)进行编码就要用什么编码集(密码本)解码
4. 今日总结
1. 编码解码
# 编码:将文字转换成字节形式 encode
# 解码:将字节转换成文字形式 decode
2.基础数据类型补充:
str:
# 首字母大写
# 每个单词首字母大写
# 大小写反转
# 居中 -- 填充
# 查找:find index
# 拼接
# 格式化: name.format
list:
# 排序(默认是升序) 降序sort(reverse=True)
# 反转
# 查找 index
# 统计 count
# + * 元素都是共用的
# 面试题:
tuple:
# (1,)# 元组
# (1) # 括号里数据本身
# + *
dict:
# popitem
# fromkeys("可迭代的键",共用的值) -- 坑
# dict(key = 1,key2 =2)
set:
# set() -- 空集合
# set("alex") # 迭代添加
3.坑
# 列表删除 -- 从后向前删除
# 创建一个新的列表,删除旧的列表
# 字典删除 -- 循环的时候不能改变源数据的大小 (可以改变值)
# 创建一个新的字典,删除旧的字典
# 集合删除 -- 循环的时候不能改变源数据的大小
类型转换:
# list -- str join
# str -- list split