python使用建议与技巧分享(一)


Posted in Python onAugust 17, 2020

这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。

1 如何创建指定长度且有特定值的list

不推荐方式

list1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
print list1
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

推荐方式

list1 = [0] * 10
print list1
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

其实,前一种方式一看就不符合DRY(Don't Repeat Yourself)原则,稍微想想就知道还有更优雅的做法。如果是元组呢?只需要将[0]改成(0,)即可,千万不要忘记0后面的逗号。另外,这里不止支持数字,其实可以是任意对象组成的list或者tuple。例如:

class User(object):
pass


user_list = [User()] * 10

2 如何连接字符串

不推荐方式

def plus_str():
str_list = ['1'] * 10000
long_str = ''
for str in str_list:
long_str = long_str + str
return long_str

推荐方式

def join_str():
str_list = ['1'] * 10000
return ''.join(str_list)

使用加号方式连接字符串,效率底下,因为会频繁的拷贝字符串和分配内存,比较耗时。但是使用join方式连接字符串,只需要分配一次内存,并将所有待连接的字符串拷贝到内存空间,效率更高。在我的电脑上,测试2个函数的耗时,当执行10000次时,前者耗时是后者约24倍,代码如下:

print timeit(stmt="plus_str()",
setup="from __main__ import plus_str",
number=10000)

// 输出:42.7354210396

print timeit(stmt="join_str()",
setup="from __main__ import join_str",
number=10000)

// 输出: 1.78316799643

3 如何合并字典

不推荐方式

dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {'a': 4, 'b': 5, 'g': 6}
dict1.update(dict2)
merged_dict = dict1
print merged_dict
# {'a': 4, 'c': 3, 'b': 5, 'g': 6}

推荐方式

dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {'d': 4, 'f': 5, 'g': 6}
merged_dict = dict(dict1, **dict2)
print merged_dict
# {'a': 1, 'c': 3, 'b': 2, 'd': 4, 'g': 6, 'f': 5}

前一种方式会将源字典dict1修改,有一定的副作用,如果不在乎源字典被修改,前一种方式更简洁一些。后一种方式不会修改源字典,没有副作用。如果有重复的key值,按从右到左的顺序覆盖,例如:

dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {'a': 4, 'b': 5, 'g': 6}
merged_dict = dict(dict1, **dict2)
print merged_dict
# {'a': 4, 'c': 3, 'b': 5, 'g': 6}

使用右边参数dict2的key值覆盖dict1的key值。通过内建函数dict,将2个字典作为参数传递给该函数,创建一个新字典。需要特别指出的是,第二个参数dict2需要加上2个星号,这里表示该参数是一个具名参数,并且类型是字典。因为dict函数创建字典时,可以接受多个参数,这是python函数支持可变参数的规定格式。

以上就是python使用建议与技巧分享(一)的详细内容,更多关于python 建议与技巧的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
简单分析Python中用fork()函数生成的子进程
May 04 Python
python3.5使用tkinter制作记事本
Jun 20 Python
python发送邮件实例分享
Jul 28 Python
对python中的xlsxwriter库简单分析
May 04 Python
python 解压pkl文件的方法
Oct 25 Python
python训练数据时打乱训练数据与标签的两种方法小结
Nov 08 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
python推导式的使用方法实例
Feb 28 Python
如何在C++中调用Python
May 21 Python
Python2.6版本pip安装步骤解析
Aug 17 #Python
python中pathlib模块的基本用法与总结
Aug 17 #Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 #Python
详解python datetime模块
Aug 17 #Python
python实现梯度下降算法的实例详解
Aug 17 #Python
python3.5的包存放的具体路径
Aug 16 #Python
python根据字典的键来删除元素的方法
Aug 16 #Python
You might like
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
2015/09/23 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
Python参数类型以及常见的坑详解
2019/07/08 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
python map比for循环快在哪
2020/09/21 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
环保建议书500字
2014/05/14 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
2016公司中秋节寄语
2015/12/07 职场文书