700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > day2 字符编码 列表 元组 字符串操作 字典

day2 字符编码 列表 元组 字符串操作 字典

时间:2019-04-30 06:01:09

相关推荐

day2   字符编码 列表 元组 字符串操作 字典

文章目录

1.三元运算与字符串编码转换2.列表、元组操作3.字符串操作4.字典操作

1.三元运算与字符串编码转换

三元运算

a,b,c = 1,3,5d = a if a > b else cprint(d)# 5

字符串编码转换

需知:

1.在python2默认编码是ASCII, python3里默认是unicode

2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间

3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

msg = "人生苦短我学python"print(msg.encode(encoding = "utf-8")) #不填也可以,python3默认utf-8#b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xe6\x88\x91\xe5\xad\xa6python'print(msg.encode().decode(encoding = "utf-8"))#不填encoding也可以#人生苦短我学python

import sys#文件默认编码是 utf-8,在 PyCharm 中默认使用 uincode 编码print(sys.getdefaultencoding())s = '你好's_to_gbk = s.encode('gbk') #将 unicode 编码成 gbkprint(s_to_gbk)print(s.encode()) #encode 默认 编码成 utf-8#先将 gbk 解码成 unicode 再编码为 utf-8gbk_to_utf8 = s_to_gbk.decode('gbk').encode('utf-8')print(gbk_to_utf8)

2.列表、元组操作

列表:

列表定义:

names = ["ZhangSan","LiSi","WangWu","ZhaoLiu"]

切片,取元素值:

print(names) #['ZhangSan', 'LiSi', 'WangWu', 'ZhaoLiu']print(names[0],names[1]) #ZhangSan LiSiprint(names[1:4]) #左闭右开 ['LiSi', 'WangWu', 'ZhaoLiu']print(names[3])# ZhaoLiuprint(names[-2]) # 取倒二个元素 WangWuprint(names[-3:-1]) #倒着取值顺序也得按从小到大来 ['LiSi', 'WangWu']print(names[-3:]) #省略表示取-3索引处及之后的值 ['LiSi', 'WangWu', 'ZhaoLiu']print(names[:3]) #前面是0也可以省略 ['ZhangSan', 'LiSi', 'WangWu']

追加、拓展、插入、替换:

names.append("ChengQi") #在末尾追加names2 = [1,2,3,4]names.extend(names2) #拓展print(names) #['ZhangSan', 'LiSi', 'WangWu', 'ZhaoLiu', 'ChengQi', 1, 2, 3, 4]names.insert(1,"YeBa") #在索引为1的位置上插入,原先位置上的值向后移一位print(names) #['ZhangSan', 'YeBa', 'LiSi', 'WangWu', 'ZhaoLiu', 'ChengQi', 1, 2, 3, 4]names[2] = "LiXiaoLong" #替换

删除元素:

#deletenames.remove("WangWu")del names[1]names.pop() #若不输入下标则删掉末尾names.pop(2) # == del names[2]

获取索引、计数、排序:

print(names.index("ZhangSan"))print(names.count("ZhangSan"))names.sort()print(names)#默认按ASCALL排序

浅复制、深复制:

names2 = names.copy()#浅复制print(names2)names3 = ['ChengQi', 'LiXiaoLong', 'WangWu', ['YeBa','张三'], 'ZhangSan', 'ZhaoLiu']names2 = names3.copy()names2[3][0] = "王五" #结果names3 中的也被修改了,这是因为 copy 是浅复制只会复制第一层的值而不考虑第二层的值#names3 中保存的是子列表的内存地址,copy 拷贝了内存地址而不是内存地址中的值print(names3) #['ChengQi', 'LiXiaoLong', 'WangWu', ['王五', '张三'], 'ZhangSan', 'ZhaoLiu']print(names2) #['ChengQi', 'LiXiaoLong', 'WangWu', ['王五', '张三'], 'ZhangSan', 'ZhaoLiu']#浅copy的另外两种方式n1 = names3 #or names3[:]print(n1)n2 = list(names3)print(n2)import copynames2 = copy.deepcopy(names3) #深复制names2[3][0] = "林九"print(names3) #['ChengQi', 'LiXiaoLong', 'WangWu', ['王五', '张三'], 'ZhangSan', 'ZhaoLiu']print(names2) #['ChengQi', 'LiXiaoLong', 'WangWu', ['林九', '张三'], 'ZhangSan', 'ZhaoLiu']

列表的遍历:

names3 = ['ChengQi', 'LiXiaoLong', 'WangWu', ['YeBa','张三'], 'ZhangSan', 'ZhaoLiu']for i in names3:print(i)print(names3[0:-1:2]) #步长为2 ['ChengQi', 'WangWu', 'ZhangSan']print(names3[::2]) #0 和 -1 可省略 ['ChengQi', 'WangWu', 'ZhangSan']

元组

元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。

它只有2个方法,一个是count,一个是index。

names = ('aaa','bbb')print(names.index('aaa'))print(names.count('aaa'))

3.字符串操作

name = 'my name is yleave'print(name.capitalize()) #首字母大写 My name is yleaveprint(name.count('y'))#计数 2print(name.center(30,'-')) #中心补全 ------my name is yleave-------print(name.endswith('ve')) #是否以某字符结尾 Trueprint(name.expandtabs(tabsize=10)) #my name is yleave若字符串中有 /t (tab键),则将其转为size个空格print(name.find('n')) #3print(name.find('name')) #3print(name[name.find('name'):]) #字符串也能切片 name is yleavename1 = 'my name is {name} and i am {year} old'print(name1.format(name = 'yleave',year = 22)) #my name is yleave and i am 22 oldprint(name1.format_map({'name':'yleave','year':22})) #my name is yleave and i am 22 oldprint('abc123'.isalnum()) #阿拉伯数字加阿拉伯字符 Trueprint('abcABC'.isalpha()) #Trueprint('123'.isdigit()) #Trueprint('1A'.isidentifier()) #判断是否是一个合法的标识符(变量名) Falseprint('abc'.islower()) #是否是小写 Trueprint('My Name Is '.istitle()) #判断是否是标题--每个首字母大写 Trueprint('+'.join(['1','2','3'])) #使用给定的字符合并成字符串 1+2+3print(name.ljust(20,'*')) #长度不够在右边用 * 补全 my name is yleave***print(name.rjust(20,'+')) #长度不够在左边用 + 补全 +++my name is yleaveprint('\nyleave'.lstrip()) #从左边去除空格和回车print('yleave\n'.rstrip()) #从右边去除空格和回车print('\nyleave\n'.strip()) #两去除空格和回车print('yleave'.replace('e','E')) #ylEavEprint('yleave'.replace('e','E',1)) #ylEaveprint('yleave'.rfind('e')) #找该字符的最大索引print('yleave'.split('e')) #以 e 为分割符分割字符串 ['yl', 'av', '']print('yle\nave'.splitlines()) #['yle', 'ave']print('ylEaVe'.swapcase()) #YLeAvE

4.字典操作

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

语法:

info = {'stu001':'Zhang San','stu002':'Li Si','stu003':'Wang Wu',}

特性:

dict是无序的

key必须是唯一的,so 天生去重

增、改、查:

print(info) #字典是无序的print(info['stu001'])print(info.get('stu006')) #查,有就返回,没有就返回Noneprint('stu001' in info) #Trueinfo['stu001'] = '张三' #改info['stu004'] = 'Zhao Liu' #增

删除:

#deletedel info['stu001']info.pop('stu002')

输出键与值:

print(info.values()) #dict_values(['张三', 'Li Si', 'Wang Wu', 'Zhao Liu'])print(info.keys()) #dict_keys(['stu001', 'stu002', 'stu003', 'stu004'])

若要从 info.keys() 中获取数据,可将其转换为列表再取出:

info = {'stu001':'Zhang San','stu002':'Li Si','stu003':'Wang Wu',}a = list(info.keys())print(a[0]) #stu001print(type(a[0])) #<class 'str'>

其他:

b = {'stu001':'yleave',2:3,4:5}info.update(b) #将info中没有的插入,有的则更新print(info) #{'stu001': 'yleave', 'stu002': 'Li Si', 'stu003': 'Wang Wu', 'stu004': 'Zhao Liu', 2: 3, 4: 5}print(info.items()) #info 中的信息变成了列表#dict_items([('stu001', 'yleave'), ('stu002', 'Li Si'), ('stu003', 'Wang Wu'), ('stu004', 'Zhao Liu'), (2, 3), (4, 5)])c = dict.fromkeys([6,7,8],'test') #创建一个新的字典然后赋值print(c) #{6: 'test', 7: 'test', 8: 'test'}c1 = dict.fromkeys([4,5,6],[1,{'name':'yleave'},333])#3 个 key 共享一个内存地址,改任意一个key对应的值其他的也会改print(c1) #{4: [1, {'name': 'yleave'}, 333], 5: [1, {'name': 'yleave'}, 333], 6: [1, {'name': 'yleave'}, 333]}

字典循环:

for i in info:print(i,info[i])for k,v in info.items(): #先转换为列表再输出,效率较低print(k,v)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。