python 学习第四周(20201124) 字典、函数各种知识点各种应用
程序员文章站
2022-07-12 16:31:17
...
python 学习 字典、函数各种知识点各种应用
自学之前先来一个网上热门的99乘法列表练习,开动脑筋:
print('======开始学习前练习:打印九九乘法表,注意对齐=======')
for i in range(1,10):
for j in range(1,i+1):
print("%dX%d=%-2d"%(i,j,i*j),end=" ")
print("") #代表换行
for i in range(-9,0):
for j in range(-9,i+1):
print("(%-2d)X(%-2d)=%-2d"%(i,j,i*j),end=" ")
print("") #代表换行
print('======字典基础知识点,dict.get(key, default)碰到错误继续运行========')
"""
# 操作 解释
D={} 空字典
D={'spam': 2,'eggs': 3} 两项目字典
D={'food''ham':1,'egg’:2}} 嵌套
D=dict.fromkeys('a','b']) 其他构造技术
D=dict(zip(keyslist,valslist)) 关键字、对应的对、键列表
D= dict(name='Bob', age=42)
D ['eggs'] 以键进行索引运算
D ['food']['ham']
'eggs' in D 成员关系:键存在测试
D.keys() 方法:键
D.values() 值
D.items() 键+值
D.copy() 副本
D.get(key, default) 默认
"""
print('======字典基础知识点(续)========')
"""
D. update(D2) 合并
D. pop(key) 删除等
len(D) 长度(储存的元素的数目)
D[key] =42 新增/修改键,删除键
del D [key] 根据键删除条目
list(D. keys()) 字典视图(Python3.0+)
Dictionary views (Python 3.0)
D={x:x*2 for in range(10)} 字典解析(Python3.0+)
"""
D= {'spam':2,'ham':1,'eggs':3} #字典入门{}
print(D,D['spam'],len(D))
print('ham in D is','ham' in D)
print(D.values(),D.keys(),D.items())
print(list(D.values()),list(D.keys()),list(D.items())) #转化为列表。
print('======字典-原处修改字典========')
d= {'spam':2,'ham':1,'eggs':3}
d['ham'] = ['pear','apple','fry']
print(d)
del d['eggs'] #删除eggs
print(d)
d['brunch']='Bacon'
print(d)
print(d['spam'],d.get('spam'),d.get('test'),d.get('test',88)) #很有趣的点,注意看
d2= {'spam':2,'ham':1,'eggs':3}
d3={'text':4,'test':5}
d2.update(d3) #增加 合并
print('d2,d3分别为:',d2,d3)
#pop a dictionary by key
d4 ={'spam': 2, 'ham': 1, 'eggs': 3, 'text': 4, 'test': 5}
print(d4.pop('ham'),d4,d4.pop('test'))
l= ['aa','bb','cc','dd','ee']
print(l.pop(),l.pop(1)) #pop()默认移除最后一个; # pop(1) 删除特定位置的
print(l)
print('======字典-语言表========')
table = {
'Python':'Guido van Rossum',
'Peal':'Larry wall',
'Tcl':'John'
}
language ='Python'
creator = table[language]
print(creator)
print('======字典-所有内容,以key为索引========')
for i in table:
print(i,'\t',table[i]) #以关键字为索引
#注意事项:1、序列运算无效。字典上映射机制,不是序列。
#2、对新索引赋值时会添加项
#3、键不一定总是字符串
print('======字典-使用字典模拟灵活的列表,列表末尾外的偏移赋值时非法的,list不行,dict可以========')
# L=[]
# L[99]='spam'
# print(L[99]) #这三条指令运行就是非常错误的,已经99已超过,可以采用字典dict 提前赋值,列表list却不行。
d6 ={}
d6[99]='spam'
print(d6,d6[99])
print('======字典-适用于稀疏结构========')
matrix = {}
matrix[(2,3,4)]=88
matrix[(7,8,9)]=99
x=2
y=3
z=4
print(matrix[(x,y,z)],'\n',matrix)
# print(matrix[(2,3,6)]) #列表无定义,所以无结果
print('======字典-避免missing-key错误,if,else try except========')
matrix = {(2, 3, 4): 88, (7, 8, 9): 99}
if (2,3,6) in matrix:
print(matrix[(2,3,6)])
else:
print('matrix_key is error!')
matrix = {(2, 3, 4): 88, (7, 8, 9): 99}
try:
print(matrix[(2,3,6)])
except:
print('matrix_key is error!')
#后续考虑循环输入,基础还不扎实,还不大会写。
matrix11 = {88:(2, 3, 4),99:(7, 8, 9),1:(5,6,7)}
i= int(input('请输出整数索引编号:'))
if i in list(matrix11.keys()):
print(matrix11[i])
else:
print('matrix11_%d is error!'% i)
print('======字典-字典接口1========')
# import shelve #shelve通过键来访问的python持久对象的数据库 anydbm
# file = shelve.open('filename')
# file['key']='data'
# data = file['key']
#
# import cgi
# form = cgi.FieldStorage() #对cgi.FieldStorage范围的调用会产生一个类似字典的对象。
# if 'name' in form:
# showReply('Hello,'+form['name'.value])
print('======字典-创建子典的其他方法========')
"""
{'name':'mel','age':45} #1、适合场景:可以事先拼出整个字典
D1={} #2、适合场景:需要一次动态的建立字典的一个字段
D1['name'] ='mel'
D1['age'] = 45
dict([name='mel'],age=45) #3、适合场景:所需代码量少,但是要求键key必须是字符串才可以
dict([('name','mel'),('age',45)]) #4、适合场景: 需要在程序运行时把key和value逐步建成序列。
"""
print('======字典-zip函数=======')
l=list(zip(['a','b','c'],[1,2,3]))
print(l)
d8 = dict(zip(['a','b','c'],[1,2,3]))
print('d8值为:',d8)
d9 = {k:v for(k,v) in zip(['a','b','c'],[1,2,3])}
print('d9值为:',d9)
d10 ={x:x**2 for x in [1,2,3,4]}
print('d10:',d10)
d11={c:c*4 for c in 'spam'}
print('d11:',d11)
d12 = {c.lower():c+'!' for c in ['SPAM','HAM','EGGS']}
print('d12:',d12)
print('======字典-fromkeys用法=======')
d13 = dict.fromkeys(['a','b','c'],0)
d14 = {k:0 for k in ['a','b','c']}
print('d13,d14分别为:',d13,d14)
d15 = dict.fromkeys('spam')
d16 = {k:None for k in 'spam'}
print('d15,d16分别为:',d15,d16)
d17=dict(a=1,b=2,c=3)
print('d17分别为:',d17,'\n',d17.keys(),list(d17.keys()),'\n',d17.items(),list(d17.items()))
print('d18打印:',list(d17.keys())[0]) #d17.keys()[0] 错误 无法打印 list(d17.keys()[0]) 也是错误的
print('======字典-数据字典和几何,&交集 |并集 =======')
d20={'a':1,'b':2,'c':3}
print('1:',d20.keys()&d20.keys(),d20.keys(),list(d20.keys())) #细看打印效果
print('2:',d20.keys()&{'b'},d20.keys()&{'b':1})
print('3:',d20.keys()|{'b','c','d'})
d21={'a':1}
print('4:',list(d21.items()),d21.items()|d21.keys())
print('5:',d21.items()|d21)
print('6:',d21.items()|{('c',3),('d',4)})
print('7:',dict(d21.items()|{('c',3),('d',4)}))
print('======字典-排序字典键key=======')
d22 = {'a':1,'c':3,'b':2}
print(list(d22.keys()))
ks=list(d22.keys())
ks.sort()
print(ks)
print('======字典-has_key已死,in永生=======')
d23 = {'a':1,'c':3,'b':2}
if d23.get('d')!= None:
print(d23['d'])
else:
print("d23字典中'd'不存在")
if d23.get('c')!= None:
print(d23['c'])
else:
print("d23字典中'c'不存在")
print('======列表和字典-习题=======')
#两种方式来创建内涵五个整数零的列表
l=[0]*5
print(l)
l1=[]
for i in range(5):
l1.append(0)
print(l1)
print('======下次学习元组文件和相关其他=======')
上一篇: C++STL算法
下一篇: 【c++ STL】算法