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 相关文章推荐
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
Jun 13 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
Python Pexpect库的简单使用方法
Jan 29 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
解决Django生产环境无法加载静态文件问题的解决
Apr 23 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
Django REST Swagger实现指定api参数
Jul 07 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 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判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
利用python开发app实战的方法
2019/07/09 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
学习新党章思想汇报
2014/01/09 职场文书
家长对小学生的评语
2014/01/28 职场文书
校庆口号
2014/06/20 职场文书
护理专业自荐信范文
2015/03/06 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
DE1103使用报告
2022/04/05 无线电