实在写程序的时候,要用好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 搞定了,任务完成了,是不是很棒,非常省事,但是这个过程中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本身也有连接的意思,所以这个很容易能理解。