# -----------------------------------------------------------------------------
# encode 编码
# -----------------------------------------------------------------------------
# python3
#
#
# # 二进制数据类型 bytes ======= str类的函数都可以用
#
#
#name='海角' # =====字符串----unicode
#
# new_name=name.encode('utf-8') # ------ bytes类型 ------utf-8
# print(type(new_name))
#
# for i in new_name:
# print(bin(i)) # 把每个字节 --->>> 二进制
#-----------------------------------------------------------------------------
# int -- to_bytes--->>> 转换为字节码的表现形式
# -----------------------------------------------------------------------------
# a=2
# result=a.to_bytes(6,'little') # --------- little 计算机的小端 大端
# print(result)
#
# r=int.from_bytes(result,'little')
# print(r) # ------- 把字节码转换为数字
# 数字 (各种编码格式都是用的ascii码,一样的) 转换为字节码 ===== 多以不需要制定编码格式
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# str类型 的其他函数方法
# -----------------------------------------------------------------------------
# mystr.casefold()-------所有字符变小写,包括法语
# mystr .lower()------- ASCII 码 才可以变
# mystr.center(20,'*') 以字符串为中心 两边加* 一共长度为 20
# mystr.ljust(20,'*') 以字符串 左对齐 加* 一共长度为 20
# mystr.rjght(20,'*') 以字符串 右对齐 加* 一共长度为 20
# mystr.count('*') 计数 * 个数
# mystr.encode('utf-8') 字符转化
# mystr.expandtabs(20) a =====>> 一共占20个 对齐格式时使用
#
--->> 换行
# --->> 制表符
# mystr.find('a') ----- >>> 找到返回第一个索引位置
# 未找到返回 -1
# mystr.index('a') ----->>> 未找到会报错
# mystr.isalnum() ---->> 字符和数字
# mystr.idecimal() ---->> 纯数字 123
# mystr.isdigit() ---->> 数字字符 123 (1)
# mystr.isnumeric() ---->> 字符和数字 二十 (1)
# mystr.isidentifier() ---->> 判断 python内的标识符 关键字
# class-->>关键字
# int--->> 已经有意义
# mystr.islower() ---->> 是否所有小写
# mystr.isupper() ---->> 是否所有大写
# mystr.isprintable() ---->> 是否都是可以打印的字符(如果存在 -->> fasle)
# mystr.isspace() ---->> 是否全是空格
# mystr.title() ---->> 每个单词首字母大写
# mystr.istitle() ---->> 是否标题格式
# mystr.partition('+') ---->> 分割 保留 "+"
# mystr.rpartation('+') ---->> 右 分割 保留 "+"
# mystr.rsplit('*') ---->> 右 分割
# ---------ajsdsdasadsa.jpg---rsplit('.')
# mystr.splitlines() ---->> 按换行符分割
# mystr.swapcse('aLex') ---->> 大小写互换
# mystr.zfill(20) ---->> 填充0 --- 20个
#
# ------ t= mystr.maketrans('asavf','12345')
建立列表 对应关系
#------- 'asdsadqwewqewqe'.translate(t)
#
#
#
#----------------------------- -字符串格式化 -------------------------------------------
# format
# 1
# name='我叫{0},年龄{1}' #------- 安位置格式化
#
# al=name.format('apple',45)
# print(al)
#
# 2
# name='我叫{0},年龄{1},{0}{0}'
#
# al=name.format(*['海角',34]) #-------列表
# print(al)
# # 3
# name='我叫{name},年龄{age},{name}{name}'
# al=name.format(name='apple',age=18) # 对应 赋值
# print(al)
#
# 4
# name='我叫{name},年龄{age},{name}{name}'
# dic={'name':'apple','age':18}
# al=name.format(**dic) # **dic 字典 对应
# print(al)
#
# # 5
# name='我叫{name},年龄{age},{name}{name}'
# dic={'name':'apple','age':18}
# al=name.format_map(dic)
# print(al) # format_map(dic)
# #
# ------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
# list类型 的其他函数方法
#------------------------------- mylist.clear() 清空列表-->>变为空列表----------
#------------------------------- mylist.copy() 浅拷贝 ---->> 新指向一块新的地址 ----------
# li=[1,2,3,4] # 指向 一个地址
# li2=[1,2,3,4] # 新赋值 地址
#
# l3=li # --- >> 与li同一个地址
#
# li.clear()
# print(li,li2,l3) #[] [1, 2, 3, 4] []
#
# 字符串的地址变化
# n1='海角 '
# n2=n1
# n1=n1.strip() # 字符串操作会 新生成一个新字符串 n1 指向新的地址
# # n2还是不变
# print(id(n1),id(n2))
# ----------------------深拷贝 ----------------------
#
# import copy
# li=[11,[22,88],33]
# li2=copy.deepcopy(li)
# li3=li.copy()
# li[1].append(44)
# print(li,li2,li3)
#-------------------------------------mylist.count()---计数-----------------------------
#-------------------------------------mylist.extend(可迭代对象)---添加元素------------------------
#
# mylist=[1,2,3,]
# mylist.extend('123')
# print(mylist)
#-------------------------------------mylist.index('',5)---查找元素索引---丛下标为5开始------------------
# mylist=['a','a','b','a','c','b']
#
# a=mylist.index('a',2)
# print(a)
# #
# -------------------------------------mylist.insert()---插入------------------------
#-------------------------------------mylist.pop(3)---删除 取出 一个元素 ---- 默认最后一个------------------------
#-------------------------------------mylist.remove(item)---删除 --有重复的 删除第一个 -- ------------------------
# mylist=[1,2,3,4,5,6,]
# mylist.pop(2)
# print(mylist)
#-------------------------------------mylist.sort(reverse=True)--- 排序 ------------------------
# mylist=[i for i in range(7)]
# mylist.sort(reverse=True)
# print(mylist)
# -------------------------------------------------------------------------------------------------
# tuple 元组 的常用函数
# -------------------------index 索引------------------------------------------------
# -------------------------count 计数------------------------------------------------
# -------------------------------------------------------------------------------------------------
# -------------------------------------------------------------------------------------------------
# dict 字典的常用函数
# -------------------------------------------------------------------------------------------------
# 字典的 key ----可以是数字,字符串,元组----->>> 等不可变元素
# 不可变:str int tuple ===>>> 哈希----可以哈希运算
# 可变:list dic set =====>> 非哈希类型
# -----字典超找速度最快---用于查找---使用字典-----
# ------哈希索引-- key --->>> 内存地址-----
#
# 注意
# dic={1:0,True:0,0:'a',False:'o'} # =====>>> {1: 0, 0: 'o'} # bool 不能与0,1 共存
# # print(dic)
# --------------------------------- mydict.get() -取值-----------------------------------------------------
# --------------------------------- mydict.clear() -清空------------------------------------------------------
# --------------------------------- mydict.copy() -拷贝-------------------------------------------------------
# --------------------------------- mydict.items() --------------------------------------------------------
# --------------------------------- mydict.keys() --------------------------------------------------------
# --------------------------------- mydict.values() --------------------------------------------------------
# --------------------------------- mydict.pop('k1',None) -删除 返回-------------------------------------------------------
#
# dic={1:2}
# a=dic.pop(3,'没有这个键') # 件不存在时 pop('k1','没有这个键')
# print(a)
# --------------------------------- mydict.popitem() -随机删除item 返回-------------------------------------------------------
# --------------------------------- mydict.setdefault() -添加 增加 不会修改-------------------------------------------------------
# --------------------------------- mydict.update() -更新 取最新的值-------------------------------------------------------
# 创建字典 dict.fromkeys()---------------通过类拿出来的功能
# val=dict.fromkeys(['k1','k2','k3'],[]) # -------- 指向同一个列表 所有都指向这一个列表
# # print(val)
# val['k1'].append(678) #
# val['k1']=[1,2,3] # {'k1': [1, 2, 3], 'k2': [678], 'k3': [678]}
#
# # val['k1'].append(678)
# print(val)
#
# a='a'
# val=dict.fromkeys(['k1','k2','k3'],a)
# # val['k1']=9 # 重新赋值 别的变量不变
# val['k1'].upper()
# print(val)
#
#---------------------------------------------------------------------------------------------------------------
# set 集合 {} 及其常用的方法
#-----------------------------------------------------------------------------------------------------
# 没有索引,无序 里面的元素只能是 哈希类型
#-----------------------------myset.add() 添加-----------------------------------------------------------------------
#-----------------------------myset.copy() 浅拷贝----------------------------------------------------------------------
#---------------------------myset.discard('啊') 删除‘啊’--不报错--------------------------------------------------------------------
#----------------------------myset.remove('啊') 删除‘啊’----不存在会报错------------------------------------------------------------------
#--------------------------myset.pop() 随机删除----------------------------------------------------------------------
#---------------------------myset.update({7}) 更新{7}----------------------------------------------------------------------
# ------ ---- 差集 ------- ---------
# 可以 set1-list1
# --------------------------- -myset.difference(set0) 差集-1---------------------------------------------------------------------
# S = set1.difference(set2) set1-set2
# -----------------------------------myset.difference_update(set0) 差集-2---------------------------------------------------------------------
# set1.difference_update(set2) --- 把 set1 更新
# -----------------------------------myset.symetric_difference(set0) 对称差集---------------------------------------------------------------------
# S = set1.symetric_difference(set2) 对称差集
# ------ ---- 交集 ------- ---------
# -----------------------------------myset.intersection(set0) 交集-1---------------------------------------------------------------------
#
# -----------------------------------myset.intersection_update(set0) 交集-2---------------------------------------------------------------------
# ------ ---- 并集 ------- ---------
# -----------------------------------myset.union(set0) 交集-1---------------------------------------------------------------------
#
# -----------------------------------myset.union_update(set0) 交集-2---------------------------------------------------------------------
# ----------------------- isdisjoint() 判断是够无交集-------------
# ----------------------- issubset() 判断是子集-------------
# ----------------------- issuperset() 判断是父集-------------
# set1={1,2,3,4,5}
#
# set1.update({8})
# print(set1)
#
# for i in set1:
# print(i)
#
# import copy
# # a=['a',1,{1,2,[3,4],3}]
# # for i in a:
# # if not isinstance(i,int):
# # i.append(5)
# # b=copy.deepcopy(a)
# # print(a)
#
# # myset={1,2,3}
# # myset.add(4)
# # print(myset)