打印index
对于一个列表,或者说一个序列我们经常需要打印它的index,一般传统的做法或者说比较low的写法:
![技术图片](https://image.cha138.com/20210705/5eb0360789934e279d54f5613e667a23.jpg)
更优雅的写法是多用enumerate
![技术图片](https://image.cha138.com/20210705/c47ad0dcf7b9487a92f0a1a154df052f.jpg)
两个序列的循环
我们会经常对两个序列进行计算或者处理,比较low的方法是用下标去循环处理
![技术图片](https://image.cha138.com/20210705/56946014b96e4e6b900aaf284d42059d.jpg)
更优雅一点的方法:用zip轻松搞定
![技术图片](https://image.cha138.com/20210705/99d06ba11ba94421af1f329907e3d1e1.jpg)
有没有更优雅的方法呢,比如如果两个序列有10000的长度,当然有的用izip
![技术图片](https://image.cha138.com/20210705/98aa1fe11a6b4b42964544a2029ba477.jpg)
当然izip还是Py2.x时代的产物,现在Py3.6里面默认zip都是izip了!
交换变量
多个变量之间的交换,相信很多有c,c++语言基础的同学对这个再熟悉不过了,比如我们经典的冒泡排序,就会用这一招,看看比较传统的做法:
![技术图片](https://image.cha138.com/20210705/0cb17a3fdac74dceacea1d42cf7948a8.jpg)
更优雅的做法是:
![技术图片](https://image.cha138.com/20210705/ded078aa61f54cbabaffdc6c7f9cb07b.jpg)
字典的读取
字典是我们经常使用的数据结构,对于字典的访问和读取,如果我们的读取的字典的key为空怎么办,一般我们需要一个缺省值,菜鸟的写法:
![技术图片](https://image.cha138.com/20210705/e29cb229ac5b4d23b6a4e5ca403c1c99.jpg)
比较优雅的做法是:
![技术图片](https://image.cha138.com/20210705/01211c1729dd4e9699862c98172b0535.jpg)
巧妙的利用了字典get的用法,如果字典里面没有Susan这个key,则用unknow来表示缺省值!
循环查找
我们经常会在一个大的循环中作搜索业务,比如从一个文件中搜索关键字,比如从文件名列表中查找一些特殊的文件名,想当然的写法如下:
![技术图片](https://image.cha138.com/20210705/7dbce59edf714eb49a02859980833255.jpg)
更优雅的写法:上面的写法是传统的c,c++写法,Python里面有更简洁的写法:
![技术图片](https://image.cha138.com/20210705/f9c582eb6fbc40c0b14f28858fdfac65.jpg)
文件读取查找
通常来说,我们要打开一个文件,然后对文件的内容进行循环读取和处理,菜鸟的写法如下:
![技术图片](https://image.cha138.com/20210705/7dd50bb953d140e9b97400bb57677b51.jpg)
更优雅的写法:
![技术图片](https://image.cha138.com/20210705/569d95e4d9f944f0b9e06414be1936fa.jpg)
关于锁的写法
对于并发操作尤其是多线程的操作,我们对同一块内存进行读写操作的时候,通常我们都加锁保护的,想当然的写法如下:
![技术图片](https://image.cha138.com/20210705/4cf1603a43b4465e9b84e96de3783b55.jpg)
上面这样的写法我自己写了很多年,觉得没有啥问题啊,后来遇到下面的写法,瞬间膜拜了!
更优雅的写法:
![技术图片](https://image.cha138.com/20210705/c88b3bef4f284fc5ae25851055f78efa.jpg)