初识Python语言,上学时就觉得python满足了对编程语言的所有要求。python语言高效的编程技巧,让我们这些大学四年被迫学习c或c++的人兴奋不已,终于松了一口气。高级语言,你连这个都做不到,谈什么?01交换变量>>>a=3>>>b=6这种情况下,如果要在C++中交换变量,就必须要有一个空变量。但是python不需要,一行就可以了,大家看清楚>>>a,b=b,a>>>print(a)>>>6>>>ptint(b)>>>502字典推导(字典推导式)和集合推导式(Setcomprehensions)大多数Python程序员都知道并使用过列表推导式(listcomprehensions)。如果您不熟悉列表理解的概念-列表理解是一种更短、更简洁的创建列表的方法。>>>some_list=[1,2,3,4,5]>>>another_list=[x+1forxinsome_list]>>>another_list[2,3,4,5,6]从python3.1开始我们可以使用相同的语法创建集合和字典表:>>>??#SetComprehensions>>>some_list=[1,2,3,4,5,2,5,1,4,8]>>>even_set={xforxinsome_listifx%2==0}>>>even_setset([8,2,4])>>>#DictComprehensions>>>d={x:x%2==0forxinrange(1,11)}>>>d{1:False,2:True,3:False,4:True,5:False,6:True,7:False,8:True,9:False,10:True}在第一个例子中,基于some_list,创建了一个具有独特元素的集合,并且该集合仅包含偶数。在字典表的例子中,我们创建了一个key,key是1到10之间的一个不重复的整数,value是一个布尔值,表示key是否为偶数。这里值得注意的另一件事是集合的文字符号。我们可以这样简单地创建一个集合:>>>my_set={1,2,1,2,3,4}>>>my_setset([1,2,3,4])而无需使用内置函数set().03计数时使用Counter对物体进行计数。这听起来很明显,但经常被遗忘。计数对于大多数程序员来说是一项非常常见的任务,并且在大多数情况下不是很有挑战性-这里有一些方法可以更轻松地完成这项任务。Python的collections类库内置了一个dict类的子类,专门用来做这种事情的:>>>fromcollectionsimportCounter>>>c=Counter(helloworld)>>>cCounter({l:3,o:2,:1,e:1,d:1,h:1,r:1,w:1})>>>c.most_common(2)[(l,3),(o,2)]04pretty打印出JSONJSON是一种非常好的数据序列化形式,如今被各种API和Web服务广泛使用。使用python内置的json处理,可以让json字符串具有一定的可读性,但是遇到大数据时,就表现为一长条连续的线,人眼很难看清。为了让JSON数据更加友好,我们可以使用缩进参数来输出漂亮的JSON。这在交互式编程或登录控制台时特别有用:>>>importjson>>>print(json.dumps(data))#Noindention{"status":"OK","count":2,"results":[{"age":27,"name":"Oz","lactose_intolerant":true},{"age":29,"name":"Joe","lactose_intolerant":false}]}>>>打印(json.dumps(data,indent=2))#Withindention{"status":"OK","count":2,"results":[{"age":27,"name":"Oz","lactose_intolerant":true},{"age":29,"name":"Joe","lactose_instolerant":false}]}同样,使用内置的pprint模块,你也可以让其他任何东西打印出来更漂亮。05解决FizzBu??zz前段时间,JeffAtwood推广了一个简单的编程练习,叫做FizzBu??zz。问题引用如下:编写一个程序,打印从1到100的数字。3的倍数打印“Fizz”以替换此数字,5的倍数打印“Buzz”,它打印“FizzBu??zz”的倍数3和5。这是解决这个问题的一个简短而有趣的方法:forxinrange(1,101):print"fizz"[x%3*len(fizz)::]+"buzz"[x%5*len(buzz)::]orx06ifstatementprint"Hello"ifTrueelse"World"inline>>>Hello07concatenation当绑定两个不同类型的对象时,下面的最后一种方法很酷。nfc=["Packers","49ers"]afc=["Ravens","Patriots"]printnfc+afc>>>[Packers,49ers,Ravens,Patriots]printstr(1)+"world">>>1worldprint`1`+"world">>>1worldprint1,"world">>>1worldprintnfc,1>>>[Packers,49ers]108数值比较这是我在很多语言中看到的这么好的快捷方式x=2if3>x>1:printx>>>2if1
