pythondi第七天
1 基础数据类型的补充 2 数据类型间的转换 3 编码的进阶
1 基础数据类型的补充
str 练习一遍 补充了6个 capitalize swapcsae title center find index
# s1='taiBAi'
# print(s1.capitalize())#Taibai 首字符大写 其他都小写
# print(s1.swapcase())#TAIbaI 大小写互换
# msg='taibai say hi'
# print(msg.title())#Taibai Say Hi#每个单词的首字母大写
s='buurry'
#print(s.center(20,"*"))#********tai*********居中
print(s.find('r'))#通过元素找索引 找到第一个就返回,找不到 返回-1
print(s.index(''))#通过元素找索引,找到第一个就返回 找不到 报错
2 tuple 元组
元组中只有一个元素并且没有逗号 那么他不是元组,他与该元组的数据类型一致
tu=(2) 是int类型
tu=("taib")是str类型
tu=([1,2,3])是list类型
tu=(1,)就是元组了
3 list列表
#list
#index 通过元素找索引
# l=['tai','dazh','nv','123']
# print(l.index('nv'))# 2
#sort 数字排序有意思
# l=[5,4,3,7,8,6,1,9]
# #l.sort()# [1, 3, 4, 5, 6, 7, 8, 9] 默认是从小到大
# #l.sort(reverse=True)#参数 从大到小
# l.reverse()#[9, 1, 6, 8, 7, 3, 4, 5] 反转 整个list反转
# print(l)
#列表的相加相乘
# l=[1,2,3]
# l1=['taib','123']
# print(l+l1)# [1, 2, 3, 'taib', '123'] 列表的相加
# #列表与数字相乘
# print(l*3)#[1, 2, 3, 1, 2, 3, 1, 2, 3] 列表相乘
l1 = [11, 22, 33, 44, 55]
#请把索引为奇数对应的元素删除(不能一个一个删除,此l1只是举个例子,里面的元素不定)。
# for i in range(len(l1)):
# if i%2==1:
# l1.pop(i)
# print(l1#)#[11, 33, 44]和预想的不一样
#列表的特性: 前面一位的删除后后面的就向前一位 =正向循环一个列表,如果删除某个元素
#,那么这个元素后面的所有元素都会向前进一位,他们的索引相比之前也会前进一位
#直接删除
# del l1[1::2]
# print(l1)
#倒序着删除
# for i in range(len(l1)-1,-1,-1):
# if i%2==1:
# l1.pop(i)
# print(l1)
总结注意注意:循环一个列表时,最好不要改变列表的大小,否则会影响你的最终的结果
4 dict 字典的补充
#dict 字典
# dict={'name':'tai','age':18}
# #dict.update(habby='nv',high='175')#增加{'name': 'tai', 'age': 18, 'habby': 'nv', 'high': '175'}
# #dict.update(name='haha')# 改{'name': 'haha', 'age': 18, 'habby': 'nv', 'high': '175'}
# #dict.update([(1,'a'),(2,'b'),(3,'c')])# ️⃣列表的方式添加 {'name': 'tai', 'age': 18, 1: 'a', 2: 'b', 3: 'c'}
# dict1={'name':'alex','high':175}
# dict.update(dict1)# 有责改 没有增{'name': 'alex', 'age': 18, 'high': 175}
# print(dict)
#fromkeys 键是可迭代对象 值是同一个
#dic=dict.fromkeys('abc',100){'a': 100, 'b': 100, 'c': 100}
#dic=dict.fromkeys([1,2,3],'alex'){1: 'alex', 2: 'alex', 3: 'alex'}
# dic=dict.fromkeys([1,2,3],[])
# dic[1].append(666){1: [666], 2: [666], 3: [666]}
# print(dic)
#多看看这题dic = {'k1':'太白','k2':'barry','k3': '白白', 'age': 18}
#将字典中含有'K 元素的键值对删除
#方法是错的 是坑
# for key in dic:
# if 'k'in key:
# dic.pop(key)
# print(dic)#报错 改变列表的大小立刻报错
#最简单方式
# for key in list(dic.keys()):#[k1,k2,k3,age]
# if 'k' in key:
# dic.pop(key)
# print(dic)
2 数据类型之间的转换
0 ‘’ ()【】{}set{}none 转化成bool值为false
字典的效率是非常高的
3 编码的进阶
1 不同密码本之间能否互相识别 不能
用gbk编译存储后 用utf-8读出 就会报错
2 数据在内存中全部是以unicode编码的,但是当你的数据用于网络传输或存储到硬盘中必须是以非 Unicode编码。(utf-8,gbk等)
英文下
content:‘hello
内存中的编码方式:Unicode
表现形式:‘hello’
bytes:
内存中的编码方式:非Unicode
表现形式:b'hello'
中文下
content:
内存中的编码方式:Unicode
表现形式:'中国'
bytes:
内存中的编码方式:非Unicode
表现形式:b'\xe4\xb8\xad\xe5\x9b\xbd'
学会 str--》bytes 就是Unicode转化成utfutf-8 encode叫编码 decode 是解码
#在中文状态下
s='中国'
#b=b'中国'#SyntaxError: bytes can only contain ASCII literal characters.
b=s.encode('utf-8')#b'\xe4\xb8\xad\xe5\x9b\xbd'
print(b)
b1=b'\xe4\xb8\xad\xe5\x9b\xbd'
s1=b1.decode('utf-8')
print(s1)
gbk---->utf-8
b1=b'\xe4\xb8\xad\xe5\x9b\xbd'
s=b1.decode('utf-8')
s1=s.encode('gbk')
print(s,s1)

浙公网安备 33010602011771号