学Python,这几个技巧你得收藏下(文末附赠教程分享)

Python语言虽然优美,简洁和强大,但是也有很多坑,一不小心就会掉进去。我学Python的时候也遇到过,今天总结一下,希望对大家能有收获!

1.一行代码,巧妙求解

列出1到20的数字,若是3的倍数就用apple代替,若是5的倍数就用orange代替,若既是3的倍数又是5的倍数就用appleorange代替

print ['apple'[i%35::]+'orange'[i%56::] or i for i in range(1,21)]

点评:字符串的处理我自认为掌握的非常熟练了,各种奇淫技巧都已经烂熟于心,但是当我看到上面这个解法的时候,彻底跪了太巧妙了.

学Python,这几个技巧你得收藏下(文末附赠教程分享)

2.推导列表生成字典

推导列表我相信大家都用过,但是推导列表还能生成字典,非常简洁.

[图片上传失败...(image-5346b1-1512907898958)]

点评:字典的生成相信每个人都会,但是用推导列表生成字典并不是时刻都会想到的.

3.漂亮的zip生成

**print dict(zip('abcd',range(4))) **

{'a': 0, 'c': 2, 'b': 1, 'd': 3}

chinese=[90,70,96]

eng=[80,78,90]

math=[96,84,80]

total=[]

for c,m,e in zip(chinese,eng,math):

total.append(c+m+e)

print total

[266, 232, 266]

点评:zip是一个非常重要的函数,非常方便.熟悉掌握zip帮我大幅的减少函数的代码和复杂度,并且提高效率,zip是我最喜欢的函数之一!

学Python,这几个技巧你得收藏下(文末附赠教程分享)

4.if val is not None

为啥会这样写呢,为啥不能写成 if val ,不知道大家有没有思考过这样问题.

其实这两者是有区别的:比如val 可能为'',0,None,[],{}

如果写成if val 会把'',0,[],{}这样的情况也包含在里面,有的时候我们其实只想过滤掉不为None的情况

点评:平时学会推敲很重要,为啥有的代码要这样写,有的要那样写,比如==和is的区别。

学Python,这几个技巧你得收藏下(文末附赠教程分享)

5.list分组

有的时候我们希望对一个list进行分组,有什么好的办法呢

a=[3, 8, 9, 4, 1, 10, 6, 7, 2]

print [a[i:i+3] for i in xrange(0,len(a),3)]

[[3, 8, 9], [4, 1, 10], [6, 7, 2]]

点评:通过一个推导列表和切片的完美组合,就可以轻松化解.

6.递归的好例子

比如有一个嵌套的列表,里面嵌套了很多层,有列表有元组,层层嵌套,如何把它转换成只有一层的列表,必须要用递归也能解决

[图片上传失败...(image-bf5b6d-1512907898958)]

点评:递归觉得是一个好东西,虽然理解起来很复杂,但是可以用很少的代码解决很多复杂的问题.

7.查询列表里面的某一个值

有的时候,我们需要从比如一个很长的列表里面,找到某一个或者某一类的元素,怎么办? 很简单用高级函数filter()

[图片上传失败...(image-b75c10-1512907898958)]

点评:Python里的高阶函数一直是我的最爱,像map,zip,filter应该要熟练掌握.

8.一个不错的namedtuple class

namedtuple是collections模块里面的一个非常有用的函数,类似一个小的迷你类,但是省去了类的一些复杂结构,可以像访问类的变量一样去访问,非常酷.

下面这个例子是关于描述52张扑克牌的代码,目前为止是我见到过最巧妙的数据结构,设计非常精秒,值得一读.

点评:非常巧妙的利用了namedtuple,大幅的减少了代码的复杂度,简洁的同时又不降低代码的质量,这段代码我足足看了5遍,非常酷!里面还重构的了一些类的内置函数,另有妙用,大家可以自己体会一下.

学Python,这几个技巧你得收藏下(文末附赠教程分享)

9.非常漂亮的取列表,字典里面的排序

点评:利用heapq函数可以非常方便的对单列表,单字典进行排序,而对于复杂的字典组合列表,排序取值也很方便,其实用sorted也可以,二者有异曲同工之妙.

结论:

其实Python的技巧非常非常多,大家平时的写代码或者读代码的时候要注意收集,特别是有一些精妙的招数,一时半会无法领悟,可以记下来,慢慢思考,总有一天会对你的功力增长大有裨益

最后,想学习Python的小伙伴们!

请关注+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!

学Python,这几个技巧你得收藏下(文末附赠教程分享)

pytyhon学习资料

学Python,这几个技巧你得收藏下(文末附赠教程分享)

python学习资料

相关推荐