看完这10招,你会有收获的
这是菜鸟学python的第37篇原创文章
阅读本文大概需要5分钟
Python中最最重要的数据结构 字典和列表,虽然我们前面讲过,但是有一些小的技巧和绝招,大家平时一般都不知道
我总结了一些我以前遇到的问题,记录了一些技巧分享给大家.希望能对大家提高功力有所帮助
后面我们就开始讲面对对象了,所以关于字典和列表这是最后一篇了
1.Python的中拷贝
a=[1,2,3]
b=a
b.append(4)
printid(a),a
printid(b),b
>>
39161288 [1, 2, 3, 4]
39161288 [1, 2, 3, 4]
用id()函数来查看对象的唯一识别号,发现a,b是一样的,原因是因为b只是a的引用,都是同一个地址,并没有实现真正的copy
怎么解决呢,如果你想修改一个对象,但是又不需要改动原对象,必须要引入copy模块
import copy
a=[1,2,3]
b=copy.copy(a)
b.append(4)
print'a:',a
print'b:',b
>>
a: [1, 2, 3]
b: [1, 2, 3, 4]
当然若你已经知道了拷贝对象的类型,对于列表L,直接list(L)做浅拷贝,或者L[:],对于字典d,调用dict(d),对于集合拷贝集合s,调用set(s)
2.如何把字典的缺省值为100
aDict={}.fromkeys(('aa','bb','cc'),100)
for k,v inaDict.items():
print k,v
>>
aa 100
cc 100
bb 100
3.如何让列表中的元素存在就返回,不存在就返会默认值
你有一个列表L,一个索引号i, 有的时候我们希望当i是L的有效索引时获取L[i],若不是有效索引,返会一个默认值v,其实这个问题若是字典很容易用L.get(i,v)
d={1:'aa',2:'bb',3:'cc'}
print d.get(4,'xx')
>>
xx
列表怎么破,解决方案#列表的下标是负数的[-len,len),切记切记
4.循环访问序列中的元素和索引
我们需要循环访问一个序列并且每一步都知道自己已经访问到的索引,并替换掉对应的值因为Python默认的循环方式是完全不依赖索引的
比如我们要把列表中的10替换成3,解决方案:
list1=[1,2,10,4]
for index,item inenumerate(list1):
if item>9:
list1[index]=3
printlist1
>>
[1, 2, 3, 4]
或者直接变成字典去处理: dict(enumerate(list1))
5.如何用字典格式化长的字符串
aInfo={'Wangdachui':3000,'NiuYun':2000,'LinLing':4500,'Tianqi':8000}
template='''
Welcome to the pay wall.
NiuYun' salary is %(NiuYun)s.
Wangdachui's salary is %(Wangdachui)s.
'''
print template%aInfo
>>
Welcome to the pay wall.
NiuYun' salary is 2000.
Wangdachui's salary is 3000.
6.字典的更新
一般用在已经设定好了数据结构,比如股票的信息(股票的价格的变动),工资单啊(工资的变动,人员的增加),key一般不变,只是变value,一招非常实用
aInfo={'Wang':3000,'NiuYun':2000,'Lin':4500,'Tianqi':8000}
bInfo={'Wang':4000,'NiuYun':8000,'Ming':3300}
aInfo.update(bInfo)
printaInfo
>>
{'Wang': 4000, 'Tianqi': 8000, 'Lin': 4500, 'NiuYun': 8000, 'Ming': 3300}
7.删除字典
8.集合里面的常用的内置函数
主要用作判断差,补,类似运算符<,>,|,&
9.打印文件夹中英文混合的文件
|---abc.txt---
|---test123.txt
|---大家好
for name in os.listdir('.'):
print name.decode('gbk')#win下的中文编码都是gbk
10.找到两个字典的相同的内容
好了Python10招小技巧就讲到这里啦,希望能给初学者一些启发,若有什么不懂的,也可以留言跟我探讨交流.
也欢迎更多喜欢Python的同学关注菜鸟学python,一起来学python吧