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 相关文章推荐
Python专用方法与迭代机制实例分析
Sep 15 Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
Nov 28 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 Python
尝试用最短的Python代码来实现服务器和代理服务器
Jun 23 Python
详解python进行mp3格式判断
Dec 23 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
对python周期性定时器的示例详解
Feb 19 Python
通过shell+python实现企业微信预警
Mar 07 Python
python装饰器代替set get方法实例
Dec 19 Python
使用K.function()调试keras操作
Jun 17 Python
Python中对象的比较操作==和is区别详析
Feb 12 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 破解防盗链图片函数
2008/12/09 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
详解NODEJS的http实现
2018/01/04 NodeJs
解析vue、angular深度作用选择器
2019/09/11 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
python的keyword模块用法实例分析
2015/06/30 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
Python super()方法原理详解
2020/03/31 Python
python Xpath语法的使用
2020/11/26 Python
怎样创建、运行java程序
2014/08/01 面试题
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
党校自我鉴定范文
2013/10/02 职场文书
高校自主招生自荐信
2013/12/09 职场文书
职业生涯规划设计步骤
2014/01/12 职场文书
委托书模板
2014/04/04 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
个人授权委托书格式
2014/08/30 职场文书
先进典型发言材料
2014/12/30 职场文书
人民检察院起诉书
2015/05/20 职场文书
单位证明范文
2015/06/18 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python