Python开发中的高级技巧!(列表推导式,高级拆包等)值得你收藏

74 篇文章 0 订阅
40 篇文章 0 订阅

前言:

代码太多,小编就以图片方式展现出来,方便大家观看以及收藏!

ython 开发中有哪些高级技巧?这是知乎上一个问题,我总结了一些常见的技巧在这里,可能谈不上多高级,但掌握这些至少可以让你的代码看起来 Pythonic 一点。如果你还在按照类C语言的那套风格来写的话,在 code review 恐怕会要被吐槽了。

列表推导式

1.>>> chars = [ c for c in 'python' ]
2.>>> chars
3.['p', 'y', 't', 'h', 'o', 'n']

字典推导式

1.>>> dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
2.>>> double_dict1 = {k:v*2 for (k,v) in dict1.items()}
3.>>> double_dict1
4.{'a': 2, 'b': 4, 'c': 6, 'd': 8, 'e': 10}

集合推导式

1.>>> set1 = {1,2,3,4}
2.>>> double_set = {i*2 for i in set1}
3.>>> double_set
4.{8, 2, 4, 6}

合并字典

1.>>> x = {'a':1,'b':2}
2.>>> y = {'c':3, 'd':4}
3.>>> z = {**x, **y}
4.>>> z
5.{'a': 1, 'b': 2, 'c': 3, 'd': 4}

复制列表

1.>>> nums = [1,2,3]
2.>>> nums[::]
3.[1, 2, 3]
4.>>> copy_nums = nums[::]
5.>>> copy_nums
6.[1, 2, 3]

反转列表

1.>>> reverse_nums = nums[::-1]
2.>>> reverse_nums
3.[3, 2, 1]
4.PACKING / UNPACKING

变量交换

1.>>> a,b = 1, 2
2.>>> a ,b = b,a
3.>>> a
4.2
5.>>> b
6.1

高级拆包

1.>>> a, *b = 1,2,3
2.>>> a
3.1
4.>>> b
5.[2, 3]

或者

1.>>> a, *b, c = 1,2,3,4,5
2.>>> a
3.1
4.>>> b
5.[2, 3, 4]
6.>>> c
7.5

函数返回多个值(其实是自动packing成元组)然后unpacking赋值给4个变量

1.>>> def f():
2.... return 1, 2, 3, 4
3....
4.>>> a, b, c, d = f()
5.>>> a
6.1
7.>>> d
8.4

列表合并成字符串

1.>>> " ".join(["I", "Love", "Python"])
2.'I Love Python'

链式比较

Python开发中的高级技巧!(列表推导式,高级拆包等)值得你收藏

 

in 代替 or

1.>>> if x == 1 or x == 2 or x == 3:
2 ... pass
3 ...
4 >>> if x in (1,2,3):
5 ... pass

字典代替多个if else

Python开发中的高级技巧!(列表推导式,高级拆包等)值得你收藏

 

有下标索引的枚举

>>> for i, e in enumerate(["a","b","c"]):
... print(i, e)
...
0 a
1 b
2 c

生成器

注意区分列表推导式,生成器效率更高

Python开发中的高级技巧!(列表推导式,高级拆包等)值得你收藏

 

默认字典 defaultdict

>>> d = dict()
>>> d['nums']
KeyError: 'nums'
>>>
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d["nums"]
[]

字符串格式化

>>> lang = 'python'
>>> f'{lang} is most popular language in the world'
'python is most popular language in the world'

列表中出现次数最多的元素

>>> nums = [1,2,3,3]
>>> max(set(nums), key=nums.count)
3

或者

from collections import Counter
>>> Counter(nums).most_common()[0][0]
3

读写文件

>>> with open("test.txt", "w") as f:
... f.writelines("hello")

判断对象类型,可指定多个类型

>>> isinstance(a, (int, str))
True

类似的还有字符串的 startswith,endswith

Python开发中的高级技巧!(列表推导式,高级拆包等)值得你收藏

 

前者对人友好,可读性更强,后者对计算机友好,支持 obj == eval(repr(obj))

使用装饰器

Python开发中的高级技巧!(列表推导式,高级拆包等)值得你收藏

 

如果不使用装饰器,可读性非常差

def say():
return "Hello"
>>> makebold(makeitalic(say))()
<b><i>Hello</i></b>

以上就是全部内容啦!

最后,小编想说一句话:我是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以加群:877562786

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值