补充知识
1.字符串方法的补充
s = str()
s.format() # 格式化输出
"连接符".join("连接的对象") # 拼接
s.find() # 字符串的查找
s.capitalize() # 首字母大写
s.title() # 单词的首字母大写
s.index("e") # 查找某个对象的索引值
s.center(20) # 居中显示字符串
s.encode("utf-8") # 编码
s.swapcase() # 字符串大小写互换
2.列表方法的补充
lst = list()
lst.sort() # 列表的排序,默认为升序
lst.reverse() # 列表的反转
lst.sort(reverse=True) #列表排序,降序排列
print(lst)
3.字典方法的补充
dic = dict()
dic.fromkeys("参数一","参数二")
# 批量创建键值对和字典 参数1:可迭代对象,参数2:创建时公用这个值
4.面试时经常遇到的坑
# 面试题1
列表
lst2 = [1,2,[]]
lst3 = lst2 * 3
print(lst2)
print(lst3) # []公用一个内存空间地址
lst3[-1].append(5)
print(lst3)
# lst3[]里都加入了5,因为[]公用了一个内存空间的地址
元组
tu1 = (1,2,[])
tu2 = tu1 * 3
tu2[-1].append(10)
print(tu2)
同上[]公用了一个内存空间的地址
字典
dic = {}
dic = dic.fromkeys("abc",[])
print(dic)
dic["a"] = "8"
print(dic)
将字典里的键"a"对应的元素修改为了8,不影响后续列表
# 面试题2
循环删除元素
1.for循环自己维护了计数
2.列表有个自动补位的效果
lst = [1,2,3,4,5,6,7]
for i in range(len(lst)):
if i % 2 == 1:
lst.pop(i)
print(lst)
for i in range(len(lst)-1,-1,-1):
if i % 2 ==1:
lst.pop(i)
print(lst)
利用for循环,与列表索引进行循环删除列表元素的时候,需要注意列表的自动补位机制
由于自动补位机制的影响,删除时会存在索引超出的情况,因此可以选择倒序删除
练习题1
删除列表元素中开头为周的数据
lst = ["周星驰","周芷若","马冬梅","大润发","周杰伦","张杰"]
lst1 = lst[:]
for i in lst1:
if i.startswith("周"):
lst.remove(i)
print(lst)
字典和集合循环删除的坑:
dic = {"key":1,"key2":2,"key3":4} # 大小就是字典的总长度
for i in dic:
dic[i] = i
print(dic)
字典和集合在循环的时候不能改变原来的大小
dic = {"key":1,"key2":2,"key3":4}
dic1 = dic.copy()
for i in dic1:
del dic[i]
print(dic)
5.编码进阶
s = "你好"
s1 = s.encode("utf-8")
s2 = s1.decode("utf-8")
print(s2)
print(s.encode("gbk"))
用什么编码就用什么进行解码