答疑课之二:再议数据结构与数据类型
1.list,dict,tuple之它们其实是好基友
1.1 没有最优秀的数据结构,只有最适用的
1.2 了解每个结构的特点才能活学活用
1.3 它们相互转换如此简单
2.“推倒式”(列表推导)与再议
3.排序
3.1 sorted
3.2 list之sort方法
3.2.1 key最好用
3.2.2 cmp是什么(a>b) - (a<b)
3.3 多级排序咋个办
3.4 字典如何去排序
4.字符串模板应用
4.1 回忆一下,字符串模板有哪几种方式
4.2 典型应用1:html模板
4.3 针对性比强大更为重要
1、python的基本迭代
#string
a = 'abcdefg'
for i in a:
print i
#list
b = [1,2,3,'22','dd']
for s in b:
print s
#dict
c = {"a":'aa','b':"bb"}
for cc in c.values():
print cc # 'a','b'
for aa,bb in c.items():
print aa,bb
#tuple
d = (1,2,3,'a')
for dd in d:
print dd
2、字典如何排序
a = {'a':'aaa','c':'ccc','b':'bbb'}
for x,y in a.items():
print x,y
#先把字典的键做一个排序
key_list = a.keys()
key_list.sort()
#类似于PHP的数组
for x in key_list:
print x,a[x]
'''
3、根据字典的值取得字典的键
一个值可能对应多个键,
a = {'a':'haha','b':'sss','c':'haha'}
'''
a = {'a':'haha','b':'sss','c':'haha'}
search_value = 'haha'
key_list = []
for x,y in a.items():
if y == search_value:
key_list.append(x)
print key_list
4、sorted()排序
a = 'deCvas3afdAdfFF112'
#去掉字符串中的数字
a = ''.join([x for x in a if not x.isdigit()])
print sorted(a)
#['A', 'C', 'F', 'F', 'a', 'a', 'd', 'd', 'd', 'e', 'f', 'f', 's', 'v']
print sorted(a,reverse=True)
#['v', 's', 'f', 'f', 'e', 'd', 'd', 'd', 'a', 'a', 'F', 'F', 'C', 'A']
import string
print sorted(a,key=string.upper)
#key参数的原理,就是用string.upper执行a列表参数中的每个参数,类似于回调函数。
#['a', 'a', 'A', 'C', 'd', 'd', 'd', 'e', 'f', 'f', 'F', 'F', 's', 'v']
#5、maketrans和translate
import string
a = 'assdfafd2123saf'
#替换规则是一一对应的,a==@ , s==!
g = string.maketrans('as','@!')
print a.translate(g,'2') #第二个参数是删除,逐字删除的
#@!!df@fd13!@f
#他和a.replace的区别是,replace是整体替换是替换as的
#6、with 新的语句。
g = open('a.txt','w')
g.write('haha\nssss')
g.close()
with open('a.txt','a') as g:
g.write('aaaa')
#两者的区别在于一个close,with块结束后,直接就关闭了,不用在close