1.基础数据类型补充
str:
不可变数据
1.首字母大写:
name = "alex"
name1 = name.capitalize()
print(name1)
2.每个单词首字母大写:
name = "alex wusir"
print(name.title())
3.大小写反转
name = "Alex"
print(name.swapcase())
4.居中 -- 填充
name = "alex"
print(name.center(20,"-"))
5.查找
从左向右 只查找一个
name = "alelx"
print(name.find("b")) #find查找不存在的返回-1 存在返回"0"
print(name.index("b")) #index查找不存在的就报错,,存在的返回索引值
6.拼接 ***
name = "al3x"
print("_".join(name))
7.格式化
① %s
② f''
③ 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)) # 按照关键字进行填充
8.字符串的 加 和 乘
开辟新的内存空间
name = "alex"
name1 = "wusir"
print(name)
print(name1)
print(name + name1)
list
1.定义方式
list("123")
2.其他方法
2.1 排序 (默认升序)
lst = [1,2,23,234,435,36,23,213421,421,4231,534,65]
lst.sort()
print(lst)
lst = ["你好","我好"]
lst.sort()
print(lst)
2.2 反转
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.extend(lst1)
print(lst)
方式二:
print(lst+lst1)
正题
lst = [1,2,3,4,5]
lst1= lst * 5
new_lst = lst * 5
print(new_lst[0] is new_lst[-5]) # True
扩展
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]]
tuple
tu = ("12") # 数据类型是( )中数据本身
print(type(tu))
# <class 'str'>
tu = (1,) # (1,) 是元组
print(type(tu))
# <class 'tuple'>
元组 加 乘 不可变共用,可变也共用
dict
定义一个字典:
print(dict(k = 1,k = 2))
随机删除:
dic = {"key":1,"key2":2,"key3":56}
print(dic.popitem()) # 返回的是被删除的键值对(键,值)
print(dic)
# python3.6 默认删除最后一个(bug)
批量添加:
dic = {}
dic.fromkeys("123",[23])
# 批量添加键值对{"1":[23],"2":[23],"3":[23]}
print(dic)
dic = dict.fromkeys("123456789",1)
# 批量添加键值对"键是可迭代对象",值 -- 会被共用
dic["1"] = 18
print(dic)
set
set() -- 空集合
{} -- 空字典
定义集合:set("alex") # 迭代添加的
bool
True False
数字: 0
字符串: ""
列表:[]
元组:()
字典:{}
集合: set()
其他: None
数据类型之间转换
list tuple
tuple list
str转 list的方法:
name = "alex"
print(name.split())
list转 str的方法:
lst = ["1","2","3"]
print(''.join(lst))
set - list
list - set
python的数据类型
可变:
list ,dict ,set
不可变:
int bool str tuple
有序:
list,tuple,str,int,bool
无序:
dict,set
取值方式:
索引: str list tuple
直接: set ,int ,bool
键: dict
2.以后会遇见的坑
for的死循环
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,5]
for i in range(len(lst)):
lst.pop()
print(lst)
lst = [1,2,3,4,5]
for i in range(len(lst)-1,-1,-1):
del lst[i]
print(lst)
lst = [1,2,3,4,5]
for i in range(len(lst)):
del lst[-1]
print(lst)
lst = [1,2,3,4,5]
lst1 = lst.copy()
for i in lst1:
lst.remove(i)
print(lst)
删除字典的坑
dic = dict.fromkeys("12345",1)
for i in dic:
dic.pop(i)
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") # 编码
s2 = name.encode("gbk") # 编码
s2 = s1.decode("utf-8") # 解码
print(s2.encode("gbk"))
以什么编码集(密码本)进行编码就要用什么编码集(密码本)解码