python 使用注意事项

最近使用一段python来写程序,留下一些记录,方便以事查看。

1.list内存消耗

   list是python的苦工,很好用,做小数据处理时很好用,但是list耗内存。当然几百个是没有什么影响的。我尝试过用list存取文件内容。这个文件的内容比较特殊,每一行的文本不超过20个字符,但是大约10万行。文件大小是20M。我用一个list存整个文件内容,内在消耗大约20M。符合常理。但是我用list.split(),分行之后,耗了200M内存,我猜测是因为list封装C++代码,虚函数比较多,导致内存消耗巨大。

2.list对象使用

  有时候为了方便的建立一个固定长度list,使用类似于

a = [[]]*100  # a中所有的[]指向同一个对象
的代码,逻辑没错,但实际出错。这种情况,最好用
a = []
for i in range(100):
    a.append([])  # 保证每个list不同

3. lsit 的排序

list 支持 list.sort(key, reverse),这个排序变得很简单。key参数指定了哪些数值做为排序基准。如下例:

def Tcmp(t):
    return t[1]  # 拿第一个数作为比较基准
a = [(5,6),(3,4),(1,2)]
a.sort(key=Tcmp)
print a # [(1, 2), (3, 4), (5, 6)]

4.PyQt4.QString
dialog = QtGui.QFileDialog()
dialog.setDirectory('D:/')
dialog.setFileMode(QtGui.QFileDialog.DirectoryOnly)
print dialog.getExistingDirectory() # QtCore.QString对象,直接当python的str处理会意想不到的bug,而且很难找出来
print str(dialog.getExistingDirectory()) #正确用法


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值