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动态监控日志内容的示例
Feb 16 Python
9种python web 程序的部署方式小结
Jun 30 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
Python简单连接MongoDB数据库的方法
Mar 15 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
Jun 11 Python
详解Python 中sys.stdin.readline()的用法
Sep 12 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
Dec 04 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
keras得到每层的系数方式
Jun 15 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 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
实用函数10
2007/11/08 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
用Python写冒泡排序代码
2016/04/12 Python
Python实现注册、登录小程序功能
2018/09/21 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
Python count函数使用方法实例解析
2020/03/23 Python
python中有帮助函数吗
2020/06/19 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
利用python爬取有道词典的方法
2020/12/08 Python
python excel多行合并的方法
2020/12/09 Python
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
2014年百日安全生产活动总结
2014/05/04 职场文书
体育活动总结范文
2014/05/04 职场文书
企业公益活动策划方案
2014/08/24 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python