基础类型补充
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
print(name.index("b")) #index查找不存在的就报错
6.拼接
name = "al3x"
# print("_".join(name)) ***
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)) # 按照关键字进行填充
8.+ * 开辟新的空间
name = "alex"
name1 = "wusir"
print(id(name))
print(id(name1))
print(id(name + name1))
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)
tuple
tu = ("12") # 数据类型是()中数据本身
print(type(tu))
tu = (1,) # (1,)是元组
print(type(tu))
元组 + * 不可变共用,可变也共用
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 = dict.fromkeys("123456789",1) # 批量添加键值对"键是可迭代对象",值 -- 会被共用
dic["1"] = 18
print(dic)
set
# set() -- 空集合
# {} -- 空字典
# 定义集合:
# set("alex") # 迭代添加的
bool: False
数字: 0
字符串: ""
列表:[]
元组:()
字典:{}
集合: set()
其他: None
数据类型之间转换
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
# python数据类型:
# 可变:
# list ,dict ,set
# 不可变:
# int bool str tuple
# 有序:
# list,tuple,str,int,bool
# 无序:
# dict,set
# 取值方式:
# 索引: str list tuple
# 直接: set ,int ,bool
# 键: dict
二次编码
密码本
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
s2 = name.encode("gbk") # 编码 6
s2 = s1.decode("utf-8") # 解码
print(s2.encode("gbk"))
# 以什么编码集(密码本)进行编码就要用什么编码集(密码本)解码
以后会遇见的坑坑坑
循环
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)
删除字典的坑
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)
# 集合和字典都是迭代的时候不能改变原来的大小