python中的效率问题

       一直觉得Python是一门非常优美的语言,它那简洁的语法,有条理的缩进,看起来舒服,写起来也觉得非常不错,其在写程序的时候,要用好python并不是一件容易的事情,当然,用好它是一件非常有趣的事情,会让事情看起来非常简洁有效。比如:已知list型对象a = [1,2,3,4,5,6,7,8,9],要求只保留a中除3余2的数(如:5%3 == 2,则5满足要求),题最后的结果应该是a = [2,5,8],在这个过程中,数组的长度是发生了变化了,python为我们提供了非常方便的语法一句话即可解决a = [i for i in a if i % 3 == 2],ok,搞定了,任务完成了,是不是很棒,非常省事,但是这个过程中list中的元素与list的长度都发生了变化,python在给我们带来这些高效的语法中,这其中的精妙之处是需要挖掘的。

      再比如说定义了一个函数,如:

def foo():
       return "ok"
A = ''',现在要调用foo()10000次,把它的返回值存入A里面(每次调用把返回值追加在A的结尾),这么解决,A = (10000 * foo()),好了,搞定了,这样会有什么问题?一下子分配10000个“ok",靠,万一系统没这么多空间给你分配,如何?而且这么做的效率也不高,没事,python有好的解决方法也能一句话搞定,A = A .join([c for i in xrange(10000)]),搞定里面涉及到的问题就有点多了,首先是这个xrange,range和它长得比较像,比如说for i in range(10),它一次给分配一个list[0,1,2,3...9],可是xrange它不这么干,for i in xrange(10)也生成一个list,但它每次循环只产生一个数加入list这样它每次的系统开销会比较小,就好比人吃饭,range呢是一次把一天的饭吃完了,这样省事,但也可能导致胃胀胃痛,xrange呢,分早中晚三顿吃,这是一个好习惯,既然是好习就要保持,为了身体健康,多用xrange大笑,再说join,这个函数能把list中的元素以字符串的形式连接起来,join本身也有连接的意思,所以这个很容易能理解。

       这些只是冰山一角而已,在用的过程慢慢发掘与积累吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值