python基础 day7

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)
上一篇:python中list 和str类型的互相转换


下一篇:两个List集合取交集、并集、差集