s1 = str(123)
#首字母大写
s = "alex wusir"
s1 = s.capitalize()
print(s1)
# 每个单词首字母大写
s = "alex wusir"
s1 = s.title()
print(s1)
# 统计出现的次数
s = "alex awusair"
print(s.count("a"))
# 大小写转换
s = "alex"
print(s.swapcase())
# 查找
s = "alex taibai"
print(s.find("c")) # find 查找不到的时候返回 -1
print(s.index("C")) # index 查找不到就报错
# 找到所有a的下标
for i in range(len(s)):
if s[i] == 'a':
print(i)
list:
li = list("815678234") # 定义的方式
print(li)
#统计
print(li.count("1"))
#查看
print(li.index("1"))
#反转
li.reverse()
print(li)
#排序
li.sort() # 升序
li.sort(reverse=True) # 降序
print(li)
# tuple:
tu = tuple("12345")
# 统计
print(tu.count("3"))
# 查找
print(tu.index("1"))
# dict:
dic = dict(k=1,k1=123,k2="aa",k3=222,k4=1123123) # 定义方式
print dic
dic.popitem() #随机删除
print(dic)
# 随机删除
dic.popitem()
#python3.6版本 默认删除最后个键值对
#python3.5版本以前 随机删除
# 批量创建字典
dic = {}
dic1 = dict.fromkeys("abcdef",[4,5,6])
# 第一个参数可迭代对象
# 第二个参数是每个键对应的值 -- 用的都是同一个内存地址
dic1["a"].remove(5) #都会删除掉
print(dic1)
# set:
s = set("1234") # 定义方式
print(s)
# 数据类型转换:
# str - int # 字符串中必须都是十进制的数,才能进行转换
s = "abc"
n = int(s)
print(n,type(n))
# int - str
n = 123
s = str(n)
print(s,type(s))
# str - list
s = "123"
li = list(s)
print(li)
list - str
li = ["12","3"]
s = str(li)
print(s,type(s))
print(''.join(li)) #join 不能有数字
# 面试题:
# 把字符串转化成列表
print(s.split())
# 把列表转换成字符串
print(''.join(li))
# list - tuple
li = [1,2,3]
tu = tuple(li)
print(tu)
# tuple - list
tu = (1,2,3)
li = list(tu)
print(li)
# set - list
s = {12,3,4}
print(list(s))
# list - set
li = [1,2,3]
s = set(li)
print(s)
# 总结:
# 字符串 -- 数字:字符串中必须都是十进制的数字
# 数字 -- 字符串:直接转换
# 列表 -- 字符串:''.join() -- 可迭代的对象中不能出现数字
# 字符串 -- 列表:split
# 除字典外,容器数据类型之间可以直接相互转换
# 总结:
# str,int,bool,list,tuple,dict,set
# 有序:
# str,int,bool,list,tuple
# 无序:
# dict,set
# 可变:
# list,dict,set
# 不可变:
# str,int,bool,tuple
# 访问方式:
# 直接访问:int,bool,set
# 顺序访问:list,tuple,str
# 通过键访问: dict
li = [1,2,3,4] # [1,3,4]
# # 索引值是奇数的删除
for i in range(4):
if i % 2 == 1:
li.pop(i) # 会报错
print(li)
# 面试题:
li = [1,2,3,4,5] #[1,3,4,5]
# # 索引值是奇数的删除
for i in range(4):
if i % 2 == 1:
li.pop(i) # 结果不对
print(li)
#因为列表正向会自动补位,所以刚好错过
li = [1,2,3,4,5]
for i in range(len(li)-1,-1,-1):
if i % 2 == 1:
li.pop(i) # 倒序删除
print(li)
# 偷换感念
li = [1,2,3,4,5]
new_li = []
for i in range(len(li)):
if i % 2 == 1:
new_li.append(li[i])
for em in new_li:
li.remove(em)
print(li)
li = [1,2,3,4,5]
for i in range(len(li)-1,-1,-1):
if i % 2 == 1:
del li[i] # 倒序删除
print(li)
li = [1,2,3,4,5]
del li[1::2]
print(li)
# 使用for删除列表的时候从左向右删除,会报错.结果不对
dic = {"k1":"v1","k2":"v2"}
for i in dic:
dic["k3"] = "v3"
print(dic)
# 面试题:
li = [1,2,3,4]
for i in li:
li.append(i)
print(li) #会一直重复添加,因为循环一个一直在变化的列表,是没有尽头的
# 不能在遍历字典本身中改变大小,要批量删除字典的键值对
dic = {"k1":"v1","k2":"v2","k3":"v3"}
for i in dic:
dic["k7"] = "1"
print(dic)
li = []
for i in dic:
if i == "k1" or i == "k3":
li.append(i)
for em in li:
dic.pop(em)
print(dic)
# 回顾:
# ascii 不支持中文
# gbk 国标 中文2 英文1
# unicode 万国码 英文2 中文4
# utf-8 英文1 欧洲2 亚洲3
# 硬盘中存储的是 字节
# 今天晚上去洗脚 gbk 010101010101 传输字节 010101010101 gbk 今天晚上去洗脚
# s = "abc"
# print(s.encode("gbk"))
# b'\xc6\xe6\xc6\xe6' -- 字节
# b'abc'
# s = "aaaa"
# s1 = b"aaaa"
# s = "今天晚上,吃鸡!"
# s1 = s.encode("gbk") # 中文转换成字节 -- 编码
# s1 = s.encode("utf-8") # 中文转换成字节 -- 编码
# b'\xbd\xf1\xcc\xec\xcd\xed\xc9\xcf,\xb3\xd4\xbc\xa6!'
# print(s1.decode("utf-8")) #字节转换成字符串 -- 解码
# python3内存使用的就是unicode
# python2内存使用的就是ascii
# s = "你好"
# s1 = s.encode("utf-8") # 字节
# print(s1) # 6个字节
# print(s1.decode("gbk")) # 3个字
结论:用什么编码就用什么解码
原文:https://www.cnblogs.com/li-dong-yu-95-11-21/p/11010409.html