感受Python的美妙

        最近上班的时候忙里偷闲,仔细研读了DiveIntoPython中关于Python特殊数据类型的章节。而我再一次被Python的简约之美深深打动了。
         List是Python的三种特有数据类型中的一种,跟数组很像,支持直接利用下标的访问方式;同时List的size是可变,这一点又跟ArrayList是十分类似的。但是List就像是包罗万象的万花筒,不仅能够容下对象,同时也能存放基本的数据类型,如整型等。这比Java的ArrayList的装载能力强多了,在Java中ArrayList是不能存放基本类型的。List除了极强的兼收并包能力,对List中的item进行操作的灵活性更是让人为之振奋。举个最简单的例子吧,如果一个数组中存放着一个整数数列,现在想将数组中大于某个数值的数选出来构成一个新的数列。在Java中,恐怕就得这么做了,先构造一个类,然后在类中建立一个方法:

ExpandedBlockStart.gifContractedBlock.gifpublic static int[] select(int[] source, int bound) dot.gif {
InBlock.gif    
int[] result = new int[source.length];
InBlock.gif    
int j = 0;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
for (int i = 0; i < source.length; i++dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (source[i] > bound) dot.gif{
InBlock.gif           result[j] 
= source[i];
InBlock.gif           j
++;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

InBlock.gif    
return source;
ExpandedBlockEnd.gif}

None.gif

        看着这样的代码,您是不是会觉得很不爽呢?本来很简单的一件事情,怎么需要那么多的代码,而且还得为返回的数组作初始化的时候,准备多一些空间,如果实参不是一个int数组,而是double型的呢?恐怕我得再写多一个方法了。那么在Python中,又怎么做呢? 很简单,真的很简单:
         [item for item in source if item > bound ] (注:source是一个List)
您是不是很惊讶呢?OK,calm down,就是这么简单。不管source装着是int,还是double,甚至是string,这行简单的代码都能替你把问题搞定。因为Python对这样的task处理游刃有余,我们根本都不需要将其封装到一个module中了。
        除了这三种特有数据类型让我爱不释手之外,Python处理String的能力,也让我为之赞叹。如果您想将一个String重复打印几次,你的Java代码是不是要这样写呢:

None.giffor (int i = 0; i < times; i++ )
None.gif    System.
out.print("Hello " );
None.gif

        在Python中,你只需要这样:print "Hello " * 5。 噢,'*' 运算符都用到String身上了,代码也因此变得简单而易懂。Python中字符串类型有一个功能很强大的函数,就是join()。join函数可以接收具有顺序化的变量,如Dictionary、List、Tuple和String。例示如下:

None.gif>>>"+".join("123" )
None.gif'
1+2+3'          
None.gif
None.gif
>>> ";".join(["first""second""third" ])
None.gif
'first;second;third' None.gif
None.gif
None.gif

        Python的简约让我深深的陶醉了,她中和了代码的枯燥。让人心烦的代码因她的存在而变得美妙。您感受到了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值