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)

 

posted @ 2020-04-29 14:54  daoda  阅读(233)  评论(0)    收藏  举报