Python:字典列表字符串方法测试


测试的一些Python中的关于字典、列表、字符串的使用方法,放在这里备查。
整个测试代码和说明如下:

# -*- coding: utf-8 -*-
"""Python:函数中全是指针传递,而任何变量都是给予一个指针指向一个内存空间"""import types
import copy
import string###define _Debug  to enable assert__Debug__=1def my_format(x,y):"""par one: what des your printpar two: value"""x="-->"+x+" {}"print(x.format(y))returndef get_format(s,len):"""头部分割"""len1 = int(len/2)print("%s %s %s" %("="*len1,s,"="*len1))returndef get_pointer(y,obj):"""获得obj中每个元素的内存地址并且打印"""list_index=[]list_values=[]if __Debug__:assert isinstance(obj,list) or isinstance(obj,dict) or isinstance(obj,str)if isinstance(obj,list) or isinstance(obj,str):for i in range(len(obj)):list_index.append(i)list_values.append("0X{:x}".format(id(obj[i])))else: ##对于字典来讲这样取应该是不对的,但是可以用作测试key_list = list(obj.keys())for i in range(len(key_list)):list_index.append(key_list[i])list_values.append("0X{:x}".format(id(obj[key_list[i]])))y = "-->" + y + " {}"print(y.format(list(zip(list_index,list_values))))returndef convert_to_int(obj):"""将list中的字符也转换为ASCII返回一个新list"""list_test_m=[]if __Debug__:assert isinstance(obj,list)for m in obj:if isinstance(m, str):list_test_m.append(ord(m))else:list_test_m.append(m)return list_test_mdef init_smaple(x):"""初始化测试数据"""if __Debug__:assert str(type(x))=="<class 'list'>"for i in  range(10):x.append(i)return tuple(x)sample_list=[]  #外部全局变量
sample_tupe= init_smaple(sample_list) #外部全局变量def main_dict(dict_test):"""测试的dict一些常用的方法:
1、字典的键不可能相同
2、字典是hash算法KEY-VALUES的数据结构
3、字典没有顺序,这是hash算法注定的
4、查找时间复杂度O(1)
5、不能进行切片操作"""#part1:最简单的更改和增加字典的方式dict_test['gaopeng_4'] = '44'dict_test['gaopeng_5'] = '44'dict_test['gaopeng_5'] = '55'dict_test['gaopeng_5'] = '0' #修改my_format ("part1:simple add modify value",dict_test)#part2:setdefault:会返回原有的值 并且更新 如果没有则设置一个,返回老值 注意和get的区别 part10 get不会更新只能设置返回的值dict_test.setdefault("gaopeng_1",'N/A')dict_test.setdefault("gaopeng_2",'N/A')my_format ("part2:setdefault:",dict_test.setdefault("gaopeng_2",'33')) ##更改my_format ("part2:setdefault:",dict_test)#part3:update:根据一个字典更改或者增加到另外一个字典,键相同则更新,不相同则增加dict_test_1 = {'gaopeng_1':'18','gaopeng_3':'N/A'}dict_test.update(dict_test_1)my_format ("part3:update:",dict_test)#part4:values:通过字典的values返回一个字典视图dict_viewmy_format ("part4:values:",dict_test.values())dict_test_v_list= list(dict_test.values())my_format ("part4:values::dict_view:",dict_test_v_list)#part5:keys:通过字典的keys返回一个字典视图my_format ("part5:keys:",dict_test.keys())dict_test_k_list= list(dict_test.keys())my_format ("part5:keys:dict_view:",dict_test_k_list)# part6:items:通过字典的返回一个字典视图,其值为key-values p61 需要转换为listdict_test_k_v_list = list(dict_test.items())my_format ("part6:items:", dict_test.items())my_format ("part6:items:dict_view:", dict_test_k_v_list)#part7:pop:根据键值删除values 返回删除的valuesmy_format("part7:pop:删除前", dict_test)my_format ("part7:pop:删除",dict_test.pop('gaopeng_1'))my_format("part7:pop:删除后", dict_test)#part8:popitem:随机弹出一个元素 返回删除的key-valuesdict_test_copy = dict_test.copy() #一层浅拷贝即可for i in range(len(dict_test)):my_format ("part8:popitem:", dict_test_copy.popitem())#part9:fromkeys;根据一个字典的keys创建另外一个字典,值为None可以认为指定my_format ("part9:fromkeys;",  {}.fromkeys(dict_test))my_format ("part9:fromkeys;",  dict.fromkeys(dict_test,'NULL'))#part10:get 通过key访问字典数据,但是如果没有不会报错,也不会像setdefault一样设置一个,没有则#返回None,也可以自己指定返回值my_format ("part10:当前字典为:", dict_test)my_format ("part10:get:", dict_test.get("gaopeng_10"))my_format ("part10:get:", dict_test.get("gaopeng_10",'NULL'))my_format ("part10:get:", dict_test.get("gaopeng_5"))#part11:clear python引用(指针)传递,clear用于同时清理变量但是 是一个指针指向的内存空间的值#dict_test__c = dict_test.copy()dict_test__c = dict_testif dict_test__c is dict_test:my_format ("part11:他们是同样地址指向的字典如果要清理使用clear方法:", str(id(dict_test__c))+"=="+str(id(dict_test)))dict_test.clear()my_format ("part11:clear:", dict_test__c)my_format ("part11:clear:", dict_test)else:my_format ("part11:Diff addr not use clear:", str(id(dict_test__c)) + "==" + str(id(dict_test)))#part12:format_map 这种方法是字符串的方法用于通过字典的key 进行映射到 values 替换到字符串str_m = """name is  {name} age is {age}""".format_map({"name":"gaopeng","age":22})my_format("part12:format_map:", str_m)returndef main_list(list_test):"""测试的list一些常用的方法:
1、list类似于链表数据结构
2、感觉查找的时间复杂度为O(n)
3、list可以进行头插尾插,按照索引插入,这是链表数据结构决定的
4、list可以进行头删尾删,按照索引删除,这是链表数据结构决定的"""#part0:init list:for i in range(97,110):if i%2 == 0:list_test.append(chr(i))else:list_test.append(i)else:my_format("part0:init list:",list_test)#part1:list:常用于将字符串按字符分割为一个list 当然也有其他作用my_format("part1:list:", list("test"))if list({"test1":1,"test2":2,"test3":3}) == list({"test1": 1, "test2": 2, "test3": 3}.keys()): #其他作用举例my_format("part1:list:", "The same!!")#part2:修改列表的方式也非常简单找到下标修改即可,但是不能修改没有的值,这点和字典不一样,字典试图修改没有的值则新加入一个元素list_test[0]=110my_format("part2:", list_test)#part3:list切片#1、左边包含右边不包含#2、并且切片可以赋值,也就是说改变元素内存的位置#3、切片左边不能大于等于右边否则返回为空#4、左边不填值表示最开头,最开头可以用0代替,右边不填值表示最末尾,无法代替#5、切片可以指定步长 如果为正数则左到右开始计数步长 如果是负数则改变默认的取值方式# EXP:[-3::-2]  [110, 'b', 99, 'd', 101, 'f', 103, 'h', 105, 'j', 107, 'l', 109]#          结尾<------------------------[2]----------------------*开头my_format("part3:init list:", list_test)my_format("part3:list切片", list_test[0:2])my_format("part3:list负数切片", list_test[-3:-2]) #只包含倒数第三个元素my_format("part3:list空切片", list_test[-3:-3])  # 为空测试my_format("part3:list最后3个元素", list_test[-3:])  # 最后3个元素my_format("part3:list最后3个元素步[正]长为2", list_test[-3::2])  # 最后3个元素my_format("part3:list最后3个元素步[负]长为2", list_test[-3::-2])  #改变顺序my_format("part3:list切片赋值内存位置改变:改变前的位置", [ id(x) for x in list_test ])list_test[:2] = [112,'z'] #此处会改变list_test[0] list_test[1] 的引入指向(指针指向)my_format("part3:list切片赋值内存位置改变:改变后的位置", [id(x) for x in list_test])m_test = list_test[:2]my_format("part3:list切片后给予新对象地址是同一地址", [id(x) for x in m_test])m_test[1] =900my_format("part3:修改切片是否修改源数据[不修改基础对象赋值重新给予内存空间]", list_test)#part4:None列表:None 类似 C 语言中*p=NULL及空指针但是它是指向了一个固定的全局区? list中可以用于建立一个N个元素但是元素没有指向的空列表test = [None] * 10test[1] = 'I' #注意这里我修改了这个值明显这里内存指向会重新指向my_format("part4:None列表:None初始化后", test)my_format("part4:None列表:本机指向:", "0X{:x}".format(id(None)))for i in test:my_format("part4:None列表:每个元素的地址打印:", "0X{:x}".format(id(i)))#part5:删除元素:使用del可以删除list中的一个元素,引用(指针)删除list_test_m=[]for m in list_test:if isinstance(m,int):list_test_m.append(str(m))else:list_test_m.append(m)print(list_test_m)x=list_testmy_format("part5:删除元素:删除前", "+".join(list_test_m)+" "+"addr: "+str(id(list_test)))del list_test[2]list_test_m.clear()for m in list_test:if isinstance(m,int):list_test_m.append(str(m))else:list_test_m.append(m)my_format("part5:删除元素:删除后","+".join(list_test_m)+" "+"addr: "+str(id(list_test)))my_format("part5:删除元素:",x)#part6:删除元素:pop也用于删除列表中的一个元素 默认删除尾部最后一个可以指定INDEX 并且返回删除的列表值my_format("part6:删除元素:删除前",list_test)my_format("part6:删除元素尾部:", list_test.pop())my_format("part6:删除元素指定INDEX:", list_test.pop(0))my_format("part6:删除元素:删除后", list_test)#part7:删除元素:remove用于删除列表中的一个元素 通过指定值来删除[第一个]是指定值的元素my_format("part7:删除元素:删除前", list_test)list_test.remove(101)my_format("part7:删除元素:删除后", list_test)#part8:反转元素:有两种方法一种使用reverse方法另外一种使用切换步长 reverse方法是用反转的后的元素内容覆盖原来地址#但是方法二则是一个匿名的内存空间切片方式my_format("part8:反转元素:初始列表", list_test)my_format("part8:反转元素:内存地址", id(list_test))list_test.reverse()my_format("part8:反转元素:反转后", list_test)my_format("part8:反转元素:内存地址", id(list_test))list_test.reverse()my_format("part8:反转元素:反转后", list_test[::-1])#part9:增加一个元素:使用append可以为列表在末尾增加一个元素my_format("part9:增加一个元素:初始列表", list_test)list_test.append(100)my_format("part9:增加一个元素:使用append可以为列表在末尾增加一个元素", list_test)#part10:clear:使用clear会清空整个列表和字典一样即便有多个指向同一个列表的变量指针全部清空list_test_c1 = list_test.copy()list_test_c2 = list_test_c1my_format("part10:clear:清空前", list_test_c1)my_format("part10:clear:清空前", list_test_c2)my_format("part10:clear:清空前", list_test)list_test_c2.clear()my_format("part10:clear:清空后", list_test_c1)my_format("part10:clear:清空后", list_test_c2)my_format("part10:clear:清空后原始列表", list_test)#part11:copy:使用copy用于将列表复制第一层引用(指针),如果需要完全深复制到最后一层指针使用deepcopymy_format("part11:copy:原始列表内存地址", id(list_test))get_pointer("part11:copy:原始列表各元素内存地址",list_test)list_test_copy=list_test.copy()my_format("part11:copy:copy列表内存地址", id(list_test_copy))get_pointer("part11:copy:copy列表各元素内存地址", list_test_copy)list_test_deepcopy=copy.deepcopy(list_test)my_format("part11:copy:deepcopy列表内存地址", id(list_test_deepcopy))get_pointer("part11:copy:deepcopy列表各元素内存地址", list_test_deepcopy)#part12:count:count用于计算元素在列表中出现的次数 返回次数list_test.append(100) #再增加一个100my_format("part12:count:count用于计算元素在列表中出现的次数 返回次数",list_test.count(100))#part13:扩展一个list有三种方法:#方法1:使用extend,原list地址不变#方法2:使用切片赋值,原list地址不变#方法3:使用list加法,生成一个新的listlist_test.extend([990,991,992])my_format("part13:扩展:方法1:使用extend,原list地址不变", list_test)list_test[len(list_test):] = [993,994,995]my_format("part13:扩展:方法2:使用切片赋值,原list地址不变", list_test)tmp_list_test_ =  list_test+[996,997,998]my_format("part13:扩展:方法3:使用list加法,生成一个新的list", tmp_list_test_)#part14:index:index用于查找指定值第一次出现的索引 返回位置my_format("part14:index:index用于查找指定值第一次出现的索引 返回位置", list_test.index(103))my_format("part14:index:index用于查找指定值第一次出现的索引 返回位置", list_test.index(100))#part15:insert:insert用于在指定index后增加一个值 无返回#part15:insert:同时也可以用切片赋值的方式代替get_pointer("part15:insert:原有内存地址", list_test)list_test.insert(list_test.index(103), 99998)my_format("part15:insert:insert用于在指定index后增加一个值 无返回", list_test)list_test[list_test.index(103):list_test.index(103)] = [99999]my_format("part15:insert:同时也可以用切片赋值的方式代替", list_test)get_pointer("part15:insert:原有内存地址未变化", list_test)#part16:sort:对列表进行排序,在原有列表上修改 并不是返回新的副本 但是如果列表有不同类型元素 排序将不能进行#从内存地址的变化,就像是链表排序后NEXT指针重新指向,也就是改变的只是NEXT指针而已#也可以使用sorted函数返回一个副本tmp_list_test_2 = convert_to_int(list_test)[:3]tmp_list_test_2.append(1)my_format("part16:sort:原始列表", tmp_list_test_2)my_format("part16:sort:原始列表内存", id(tmp_list_test_2))get_pointer("part16:sort:原有内存地址变化", tmp_list_test_2)tmp_list_test_2.sort()my_format("part16:sort:对列表进行排序,在原有列表上修改", tmp_list_test_2)get_pointer("part16:sort:原有内存地址未变化", tmp_list_test_2)my_format("part16:sort:排除后列表内存", id(tmp_list_test_2))#part17:sorted:本方法可用用于排序很多类型,返回一个副本,但是元素的内存指针未变(python中都是这种方法节约内存)tmp_list_test_3 = convert_to_int(list_test)[:3]tmp_list_test_3.append(1)my_format("part17:sorted:原始列表", tmp_list_test_3)my_format("part17:sorted:原始列表内存", id(tmp_list_test_3))get_pointer("part17:sorted:原有内存地址变化", tmp_list_test_3)tmp_list_test_4 = sorted(tmp_list_test_3)my_format("part17:sorted:对列表进行排序,新返回副本", tmp_list_test_4)get_pointer("part17:sorted:副本元素内存地址未变化", tmp_list_test_4)my_format("part17:sorted:排除后副本列表内存改变", id(tmp_list_test_4))#part18:高级排序;sort和sorted接受两个关键字参数key和reverse#key:根据自定义的函数返回一个值作为排序的基础,类似一个函数指针#reverse:是否反向def sort_key(obj):if isinstance(obj,str):obj = ord(obj) % 10else:obj = obj%10return objmy_format("part18:sort高级排序;原始列表", list_test)list_test.sort(key=sort_key,reverse=1)my_format("part18:sort高级排序;排序后列表", list_test)list_test_1 = sorted(list_test,key=sort_key,reverse=1)my_format("part18:sorted高级排序;排序后列表", list_test_1)def main_str():"""测试的str一些常用的方法
1、字符串本身是不能修改的,实际上PYTHON简单对象(非list dict)都不能更改,只能重新赋予指向内存空间
2、在C中使用char a[10]或者 char* a=(char*)malloc(10*sizeof(char))来做,类似一个数组区别只是在栈还是堆空间,
python的str却是不可修改的
3、分片方法同样适用于字符串
"""#初始化测试字符串str_test = string.digits[::3]+string.ascii_lowercase[0:10:2]#part1:一些有用的string方法,返回新的字符串:my_format("part1:一些有用的string方法:string.digits 返回0-9的字符串:", string.digits)my_format("part1:一些有用的string方法:ascii_lowercase 返回a-z小写的字符串:", string.ascii_lowercase)my_format("part1:一些有用的string方法:ascii_uppercase 返回A-Z小写的字符串:", string.ascii_uppercase)my_format("part1:一些有用的string方法:printable 返回ASCII中可以打印的字符:", string.printable)my_format("part1:一些有用的string方法:punctuation 返回ASCII中可以标点字符:", string.punctuation)#part2:center:在让指定字符串居中两边填充字符(默认为空格),返回新的字符串#类似的还有#ljust:左边顶格右边填充#rjust:右边顶格左边填充str_test_center_20 = str_test.center(len(str_test) + 20, '=')my_format("part2:center:在让指定字符串居中两边填充字符(默认为空格),返回新的字符串:",str_test.center(len(str_test)+20,'='))my_format("part2:ljust:在让指定字符串居中两边填充字符(默认为空格),返回新的字符串:", str_test.ljust(len(str_test) + 20,'='))my_format("part2:rjust:在让指定字符串居中两边填充字符(默认为空格),返回新的字符串:", str_test.rjust(len(str_test) + 20,'='))#part3:find:查找字符串中的字符,找到第一个符合的其所在的index,没找到返回-1 可以指定起点终点 包含起点不包含终点#类似的还有# index:和find类似但是没有找到出现异常# rfind:和find类似但是最后一个符合的# rindex:和rfind类似但是没有知道出现异常# count:指定字符串出现的次数,返回次数# startswith:是否已某个字符串开头返回bool类型# endswith:是否已某个字符串结尾返回bool类型my_format("part3:find:初始化字符串:", str_test)my_format("part3:find:查找字符串中的字符:", str_test.find('a'))my_format("part3:find:查找字符串中的字符:", str_test.find('go'))my_format("part3:find:查找字符串中的字符:", str_test.find('a',2,6))my_format("part3:index:查找字符串中的字符:", str_test.index('a', 2, 6))# part4:split:其作用和join相反,用于将字符串按照指定分隔符分割为一个list,返回一个序列tmp_list=list(str_test)tmp_str='+'.join(tmp_list) ##初始化测试tmp_strstr_test=tmp_strmy_format("part4:split:字符初始化", str_test)tmp_list=str_test.split('+')my_format("part4:split:按照'+'号进行分割为一个list", tmp_list)#part5:join:其作用和split相反,用于按照指定的分割符合并字符元素的list为一个字符串,返回一个新的字符串my_format("part5:join:列表初始化", tmp_list)str_test = "".join(tmp_list)my_format("part5:join:没有指定分隔符的合并", str_test)my_format("part5:join:指定'='分隔符的合并", "=".join(tmp_list))#part6:strip:删除开头和结尾的某些字符,默认不指定为空格,返回一个新的字符串,注意只是匹配末尾#类似的还有#lstrip:删除左边#rstrip:删除右边str_test_center_26=str_test_center_20.center(len(str_test_center_20)+6,' ')str_test_center_32 = str_test_center_26.center(len(str_test_center_26) + 6, '*')my_format("part6:strip:初始化字符串为:", str_test_center_32)my_format("part6:strip:去掉符号和空格字符后:", str_test_center_32.strip(' =*')) #匹配多种字符my_format("part6:strip:去掉星号和空格字符后:", str_test_center_32.strip('*').strip())my_format("part6:lstrip:去掉符号和空格字符后:", str_test_center_32.lstrip(' =*'))my_format("part6:rstrip:去掉符号和空格字符后:", str_test_center_32.rstrip(' =*'))#part7:replace:将字符串的某些子字符串进行替换为另外的字符串,返回一个新的字符串my_format("part7:replace:初始化字符串为:", str_test_center_32)my_format("part7:replace:替换空格为+号", str_test_center_32.replace(' ','+'))#part8:translate:需要建立映射字典表,单个字符匹配进行替换,效率高于replace?#映射还是非常有用的my_format("part8:translate:初始化字符串为:", str_test_center_32)table=str_test_center_32.maketrans('a ','A+')my_format("part8:translate:映射字典为:", table) ##只做映射?my_format("part8:translate:替换后:",str_test_center_32.translate(table))str_test_center_32=str_test_center_32.translate(table)#part9:upper lower:字母全部大写或者小写返回一个新字符串my_format("part9:upper lower:初始化字符串为:", str_test_center_32)my_format("part9:upper lower:lower:", str_test_center_32.lower())my_format("part9:upper lower:upper:", str_test_center_32.upper())#part10:swapcase:将字符串中字母大小写反转 返回一个新的字符串my_format("part10:swapcase:初始化字符串为:", str_test_center_32)my_format("part10:swapcase:反转后:", str_test_center_32.swapcase())#part11:字符串反转 使用切片步长返回一个新的字符串my_format("part11:swapcase:初始化字符串为:", str_test_center_32)my_format("part11:swapcase:初始化字符串为:", str_test_center_32[::-1])#part12:swapcase将字符串第一个字母大写 返回一个新字符串#title:字符串每个单词的首字符大写 返回一个新的字符串my_format("part12:swapcase:初始化字符串为:", 'abcdef oooo')my_format("part12:swapcase:首字母大写后:", 'abcdef oooo'.capitalize())my_format("part12:title:首字母大写后:", 'abcdef oooo'.title())#part12:各种字符串检查# startswith:是否已某个字符串开头# endswith:是否已某个字符串结尾# isalnum:是否字符串的所有的字符都是数字或者字母# isalpha:是否字符串的所有的字符都是字母# isdecimal:是否所有字符都是十进制数字# isdigit:是否所有字符都是数字# isnumeric:是否字符串中字符都是数字字符"""来自网上的区别isdigit()True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字False: 汉字数字Error: 无  isnumeric()True: Unicode数字,全角数字(双字节),罗马数字,汉字数字False: 无Error: byte数字(单字节)"""# islower:是否所有字母都是小写# isupper:是否所有字母都是大写# isspace:是否字符串中的字符都是空白字符?(制表符 空格等?)my_format("part12:各种字符串检查:初始化字符串为:", str_test)my_format("part12:各种字符串检查:startswith:是否已某个字符串开头:", str_test.startswith('**'))my_format("part12:各种字符串检查:endswith:是否已某个字符串结尾:", str_test.endswith('-*'))my_format("part12:各种字符串检查:isalnum:是否字符串的所有的字符都是数字或者字母:", str_test.isalnum())my_format("part12:各种字符串检查:isalpha:是否字符串的所有的字符都是字母:", str_test.isalpha())my_format("part12:各种字符串检查:isdecimal:是否所有字符都是十进制数字:", str_test.isdecimal())my_format("part12:各种字符串检查:isdigit:是否所有字符都是十进制数字:", str_test.isdigit())my_format("part12:各种字符串检查:isnumeric:是否字符串中字符都是数字字符:", str_test.isnumeric())my_format("part12:各种字符串检查:islower:是否所有字母都是小写:", str_test.islower())my_format("part12:各种字符串检查:isupper:是否所有字母都是小写:", str_test.isupper())my_format("part12:各种字符串检查:isspace:是否字符串中的字符都是空白字符?:", '     '.isspace())#part13:字符串格式汇总#常用字符串格式#b 二进制数字#d 将整数作为十进制数字进行处理 默认设置#e 科学计数法表示小数(e表示指数)#E 同e 但用E表示指数#f 将小数表示为定点小数#F 同f 但是对于nan inf使用大写表示#o 整数使用八进制#s 保持字符串的格式不变 默认设置#x 将整数表示为16进制使用小写字母#X 同x 但是使用大写字母#% 显示百分比 及乘以100 用f表示然后加上%符号#测试字符初始化temp_inter = -100temp_inter_1 = 100temp_float = 93.33633temp_str   = 'abcdef'#字符串格式化方法1my_format("part13:字符串格式汇总:字符串格式化方法1", "this is test %s %x %o"%(temp_str,temp_inter,temp_inter))# 字符串格式化方法2 这里使用位置作为映射,默认就是0 1 2 3的方式所以可以不要 #号是一个自适应的前缀转换符 非常有用my_format("part13:字符串格式汇总:字符串格式化方法2 #号是一个自适应的前缀转换符","this is test {0:s} {1:#x} {2:#o} {3:#b} {4:%} {5:f}".format(temp_str,temp_inter,temp_inter,temp_inter,temp_float,temp_float))#字符串格式化方法3 这里使用关键字作为映射my_format("part13:字符串格式汇总:字符串格式化方法3","this is test {temp_str_ad:s} {temp_inter_ad1:x} {temp_inter_ad2:o} {temp_inter_ad3:b} {temp_float_ad1:%} {temp_float_ad2:f}".format(temp_str_ad=temp_str,temp_inter_ad1=temp_inter,temp_inter_ad2=temp_inter,temp_inter_ad3=temp_inter,temp_float_ad1=temp_float,temp_float_ad2=temp_float))#对于格式2和格式3可以使用更加详细的格式化#左对齐/居中/右对齐: <  , ^  , >my_format("part13:字符串格式汇总:左对齐/居中/右对齐","this is test \n{:<50s}\n{:^50s}\n{:>50s}".format(temp_str,temp_str,temp_str))#使用填充符号进行填充my_format("part13:字符串格式汇总:使用填充符号进行填充","this is test \n{:*<50s}\n{:*^50s}\n{:*>50s}".format(temp_str, temp_str, temp_str))#对于一个整数的大部分格式# +(用+填充) ^(居中) +(显示符号) #(自适应转换) 50(精度) x(16进制显示)my_format("part13:字符串格式汇总:对于一个整数的大部分格式:","this is test {:+^+#50x}".format(temp_inter_1))# =(将符号左边顶格) +(显示符号) #(自适应转换) 50(精度) x(16进制显示)my_format("part13:字符串格式汇总:对于一个整数的大部分格式:", "this is test {:=+#50x}".format(temp_inter_1))#对于一个小数的大部分格式# *(用*填充) ^(居中) +(显示符号) #(自适应转换) 50(精度) .2(刻度) f(float显示)my_format("part13:字符串格式汇总:对于一个小数的大部分格式:", "this is test {:*^+#50.2f}".format(temp_float))def main_normal():# part0:序列(list和tuple都支持乘法加法),字符串也支持 返回一个新的对象my_format("part0:序列:元组初始化",sample_tupe)my_format("part0:序列:列表初始化",sample_list)my_format("part0:序列:元组相加", sample_tupe+sample_tupe)my_format("part0:序列:元组相乘", sample_tupe*2)my_format("part0:序列:列表相加", sample_list+sample_list)my_format("part0:序列:列表相乘", sample_list*2)my_format("part0:序列:字符串相加", 'AAAA'+'aaaa')my_format("part0:序列:字符串相乘", 'AAAA'*2)#part1:内存地址测试temp_chr = 'abcde'temp_list = list(temp_chr)temp_dict = {}for i in range(len(temp_list)):temp_dict.setdefault( temp_list[i],i)my_format("part1:内存地址测试:初始化的字符串:", temp_chr)temp_chr_1 = temp_chrmy_format("part1:内存地址测试:字符串自身内存地址:", "0X{:x}".format(id(temp_chr)))my_format("part1:内存地址测试:temp_chr_1 = temp_chr内存地址:", "0X{:x}".format(id(temp_chr_1)))get_pointer("part1:内存地址测试:字符串各个字符内存地址?:", temp_chr)my_format("part1:内存地址测试:一个字符内存地址?:","0X{:x}".format(id(temp_chr[0])))my_format("part1:内存地址测试:初始化的列表:", temp_list)temp_list_1 = temp_listmy_format("part1:内存地址测试:list自身内存地址:", "0X{:x}".format(id(temp_list)))my_format("part1:内存地址测试:temp_list_1 = temp_list内存地址:", "0X{:x}".format(id(temp_list_1)))get_pointer("part1:内存地址测试:list各个元素内存地址:", temp_list)my_format("part1:内存地址测试:一个list元素内存地址:", "0X{:x}".format(id(temp_list[0])))my_format("part1:内存地址测试:初始化的字典:", temp_dict)temp_dict_1 = temp_dictmy_format("part1:内存地址测试:dict自身内存地址:", "0X{:x}".format(id(temp_dict)))my_format("part1:内存地址测试:temp_dict_1 = temp_dict内存地址:", "0X{:x}".format(id(temp_dict_1)))get_pointer("part1:内存地址测试:dict各个values内存地址:", temp_dict)my_format("part1:内存地址测试:一个dict values内存地址:", "0X{:x}".format(id(temp_dict['a'])))temp_dict2 = temp_dict.copy()temp_dict_3 = copy.deepcopy(temp_dict)get_pointer("part1:内存地址测试:dict.copy各个values内存地址:", temp_dict2)get_pointer("part1:内存地址测试:copy.deepcopy各个values内存地址:", temp_dict_3)returndef main():get_format("dict test",100)print(main_dict.__doc__)dict_test={}main_dict(dict_test)get_format("list test",100)print(main_list.__doc__)list_test=[]main_list(list_test)get_format("charset test", 100)print(main_str.__doc__)main_str()get_format("normal test", 100)main_normal()return##begin
if __name__ == '__main__':main()

作者微信:
微信.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Diango博客--17.统计各个分类和标签下的文章数

文章目录0.思路引导1.Model 回顾2.数据库数据聚合3.使用 Annotate4.在模板中引用新增的属性0.思路引导 在我们的博客侧边栏有分类列表和标签列表&#xff0c;显示博客已有的全部文章分类。现在想在分类名和标签名后显示该分类或者标签下有多少篇文章&#xff0c;该怎么做呢&am…

HTTP协议中request报文请求方法和状态响应码

一个HTTP请求报文由4部分组成&#xff1a; 请求行&#xff08;request line&#xff09;请求头部&#xff08;header&#xff09;空行请求数据下图给出了请求报文的一般格式&#xff1a; 请求行中包括了请求方法&#xff0c;常见的请求方法有&#xff1a; GET&#xff1a;从服务…

bmon:一个强大的网络带宽监视和调试工具

bmon 是类 Unix 系统中一个基于文本&#xff0c;简单但非常强大的 网络监视和调试工具&#xff0c;它能抓取网络相关统计信息并把它们以用户友好的格式展现出来。它是一个可靠高效的带宽监视和网速估测工具。 它能使用各种输入模块读取输入&#xff0c;并以各种输出模式显示输出…

计算机d盘无法格式化,四种方法解决D盘无法格式化问题

不少朋友系统出现故障&#xff0c;几乎都是选择重装系统的方法来解决问题。系统重装后&#xff0c;不少朋友觉得D盘没有什么重要的东西&#xff0c;就想将其格式化&#xff0c;可是系统出现windows无法格式该驱动器的提示&#xff0c;这是怎么回事呢&#xff1f;D盘无法格式化要…

sqlserver视图

作用 ①简化了操作&#xff0c;把经常使用的数据定义为视图。 ②安全性&#xff0c;用户只能查询和修改能看到的数据。 ③逻辑上的独立性&#xff0c;屏蔽了真实表的结构带来的影响。 对视图的修改&#xff1a;单表视图一般用于查询和修改&#xff0c;会改变基本表的数据&#…

Diango博客--18.使用 Fabric 自动化部署 Django 项目

文章目录1.本地安装 Fabric2.部署过程回顾3.完善项目配置4.修改 BASE_DIR 配置项5.设置 Supervisor 环境变量6.编写 Fabric 脚本7.执行 Fabric 自动部署脚本1.本地安装 Fabric $ pipenv install fabric --dev 报错&#xff1a; An error occurred while installing django-pure…

自断前程,未来80%IT工作将实现自动化

技术人员革了自己的命&#xff1f; 在上周的Structure大会上&#xff0c;硅谷著名风险投资人、亿万富翁唯诺德称未来80%的IT工作都将被AI系统所替代。不过&#xff0c;唯诺德好像并不担心&#xff0c;相反他补充了一句“我觉得很兴奋。”唯诺德表示自己并非危言耸听&#xff0c…

转://Linux Multipath多路径配置与使用案例

在Linux平台一部分存储产品使用操作系统自带的多路径软件&#xff0c;包括最常见的HP和IBM的部分存储产品&#xff0c;在Linux自带的多路径软件叫做multipath&#xff0c;这篇文章以HP EVA系列存储在Linux平台的使用为例&#xff0c;详细的在Linux平台配置和使用多路径。 那么问…

Windows中安装MongoDB以及studio3t

文章目录1.安装MongoDB2.配置并启动MongoDB3.使用studio3t连接mongodb1.安装MongoDB 运行 mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi 2.配置并启动MongoDB 创建几个文件夹具体如下&#xff1a; 1&#xff09;数据库路径&#xff08;data目录&#xff09; 2…

为旗下硬件产品服务,LG推出基于SLAM技术的3D摄像头

LG官方则表示&#xff0c;集成了LG的3D摄像头和SLAM技术的单个模块性价比很高。 今年3月份的时候&#xff0c;LG在MWC 2017上展示其和Valve合作的VR头显&#xff0c;最近他们宣布将基于AR公司Augmented Pixels的技术开发一个3D摄像头模块&#xff0c;来辅助他们的各种硬件产品…

VS工程切换cuda版本

在工程面板&#xff0c;切换到类视图&#xff0c;选中项目&#xff0c;右键菜单选择【生成自定义&#xff08;B&#xff09;…】&#xff0c;弹出下面窗口 在窗口勾选上CUDA版本&#xff0c;即可切换 转载于:https://www.cnblogs.com/xingzhensun/p/9154094.html

揭秘Microsoft Bing与Google搜索背后的故事

导读&#xff1a;Google搜索引擎已经赢得全球范围的赞誉&#xff0c;而这一切都要归功于Google开创性的MapReduce。Google搜索引擎算法只是其搜索引擎的一部分&#xff0c;在后台支持Google算法的基础设施才是真正的幕后英雄&#xff0c;其基础设施可快速的索引链接成千上万台普…

计算机图画大赛作品六年级,打字能手显本领,电脑绘画展风采——记陆埠二小举行电脑绘画和电脑打字比赛...

为了提高小学生的计算机应用水平&#xff0c;培养学生动手能力和综合素质&#xff0c;提升学生的信息素养&#xff0c;2019年5月23日、24日中午&#xff0c;陆埠镇第二小学举行了三四年级电脑打字和五六年级电脑绘画比赛。本次比赛&#xff0c;3--6年级每班中选出3名学生参加&a…

变量在原型链中的查找顺序

js原型链 下面是一道js题目&#xff1a;[javascript] view plaincopy function C1(name){ if(name){ this.name name; } } function C2(name){ this.name name; } function C3(name){ this.name name || "John"; } C1.p…

基于SpringBoot + Vue的图书管理系统

功能概述 该图书管理系统提供了一系列功能&#xff0c;包括图书管理、图书类型管理、读者借阅归还图书、用户管理和重置密码等。 在图书管理功能中&#xff0c;管理员可以方便地进行图书信息的管理。他们可以添加新的图书记录&#xff0c;包括书名、作者、出版社、ISBN等信息&a…

交换机的工作转发原理

交换机通常是运行在网络OSI七层模型的第二层数据链路层&#xff0c;如图中&#xff0c;第三层网络层通常是路由器运行在该层 今天我们来看看&#xff0c;交换机的工作转发原理是什么样的。 交换机既然是利用端口进行网络数据传输&#xff0c;那么它是如何识别数据是谁给谁的呢…

八个最好的轻量级Linux发行版

如果你在苦恼老旧的硬件无法利用&#xff0c;如果你想要一个能够在不是很大的记忆棒上运行的系统&#xff0c;如果你想要在桌面端上运行200个虚拟机&#xff0c;那么你可以考虑一些“迷你”的Linux发行版。 曾经在08年介绍过当时的十大轻量级Linux&#xff0c;现在已经是2010年…

面向对象——三层架构(表现层、业务层、持久层)

① 持久层&#xff1a;采用DAO模式&#xff0c;建立实体类和数据库表映射&#xff08;ORM映射&#xff09;。也就是哪个类对应哪个表&#xff0c;哪个属性对应哪个列。持久层 的目的就是&#xff0c;完成对象数据和关系数据的转换。 ② 业务层&#xff1a;采用事务脚本模式。将…

VMware安装Centos7后有线线缆被拔出

背景&#xff1a;在win10 系统中的虚机软件VMware Workstation中安装CentOS7桌面版&#xff0c;安装过程中没有设置网络 1.确认你win10系统打开了这两个服务&#xff1a;VMware DHCP Service和VMware NAT Service 方法&#xff1a;电脑——右键——管理——服务和应用程序——服…

SpringCloud |第二篇: 服务消费者(Ribbon)

2019独角兽企业重金招聘Python工程师标准>>> 一、Ribbon简介 Ribbon是Netflix发布的开源项目&#xff0c;主要功能是提供客户端的软件负载均衡算法&#xff0c;将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时&#xff0c;重试…