Day7 笔记
一、基础数据类型的补充
字符串str
s1 = 'jaSOn'
print(s1.capitalize()) # 首字母大写,其余变小写
print(s1.swapcase()) # 大小写反转
s2 = 'i am jason'
print(s2.title()) # 每个单词的首字母大写
s3 = 'jason'
print(s3.center(20, '*')) # 前后各放20个*
# find() 和index() 通过元素找索引,如果找不到,find输出-1,index报错
s4 = 'jason'
print(s4.find('a'))
print(s4.index('o'))
元组tuple
# 元组中如果只有一个元素,并且没有逗号,那么它就不是元组。
# count()
tuple1 = (1, 2, 2, 2, 2, 3, 3, 3)
print(tuple1.count(2))
# index()
tuple2 = ('aloha', 'jason', 'carly')
print(tuple2.index('aloha'))
列表list
# 1. index() 和字符串元组用法一样
list1 = ['aloha', 'jason', 'carly']
print(list1.index('aloha'))
# 2. sort() 排序
list2 = [1, 3, 6, 10, 2, 5, 7]
list2.sort() # 默认从小到大排序
list2.sort(reverse=True) # 从大到小排序
list2.reverse() # 反转排序
print(list2)
# 3. 列表相加
list1 = [1, 2, 3]
list2 = ['jason', 'carly', 1, 2]
list3 = list1 + list2
print(list3)
# 4. 列表可以与数字相乘
list1 = [1, 'aloha', '哈哈哈']
list2 = list1 * 3
print(list2)
# 容易掉坑的地方
# 5.倒叙法删除list1中索引为奇数的元素
list1 = [1, 2, 3, 4, 5]
for index in range(len(list1)-1, -1, -1):
if index % 2 == 1:
list1.pop(index)
print(list1)
循环一个列表的时候最好不要改变列表的大小
字典dict
# 1. update()
# 增&改的三种写法
dict1 = {'name': 'jason', 'age': 24}
dict1.update({'high': 168, 'name': 'carly'}) # 等同于dict.update(dict2)
dict1.update(hobby='sleep', age='20')
dict1.update([('what', 'dog'), ('hobby', 'eat')])
print(dict1)
# 2. fromkeys
dict1 = dict.fromkeys([1, 2, 3], 'jason')
print(dict1) # 结果为{1: 'jason', 2: 'jason', 3: 'jason'}
###注意###
dict1 = dict.fromkeys([1, 2, 3], [])
print(dict1) # 此时结果为{1: [], 2: [], 3: []}
dict1[1].append(666)
print(dict1) # 结果为{1: [666], 2: [666], 3: [666]}
# 我们打印下dict1中所有值的id看一下
for value in dict1.values():
print(id(value))
# 可以发现dict1所有值的id相同,因此,可以知道,dict1.fromkeys(lterable, value)方法中的值共用一个
# 3.将字典中键含有'k'元素的键值对删除
dict1 = {'k1': 'v1', 'k2': 'v2', 'age': '24', 'k3': 'v3', 'name': 'jason'}
# 循环一个字典时,不可以改变这个字典的大小
dict2 = {}
for key in dict1.keys():
if 'k' not in key:
dict2.update({key: dict1[key]})
print(dict2)
# 还可以将字典转成列表进行循环
for key in list(dict1.keys()):
if 'k' in key:
dict1.pop(key)
print(dict1)
二、编码的进一步认识
1.不同编码之间不能互相识别
2.数据在内存中全部都是以Unicode编码的,但是数据在网络传输或者存储在硬盘,必须是非Unicode编码
内存中的Unicode编码数据必须先转化成bytes(特殊的字符串数据类型,内部编码非Unicode)
# 英文字符串转换
b1 = b'hello'
print(b1, type(b1))
# 中文字符串转换
s2 = '杨森'
b2 = s2.encode('utf-8')
s3 = b2.decode('utf-8')
print(b2, type(b2))
print(s3, type(s3))
gbk 转换成 utf-8(重要)
# 先获取一个gbk编码
s1 = '中国'
s2 = s1.encode('gbk')
print(s2) # b'\xd6\xd0\xb9\xfa'
b_gbk = b'\xd6\xd0\xb9\xfa'
ss = b_gbk.decode('gbk')
print(ss, type(ss))
b_utf8 = ss.encode('utf-8')
print(b_utf8)