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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
Python中的命令行参数解析工具之docopt详解
Mar 27 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
Jun 23 Python
TensorFlow实现MLP多层感知机模型
Mar 09 Python
使用pandas的DataFrame的plot方法绘制图像的实例
May 24 Python
Python选择网卡发包及接收数据包
Apr 04 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
Python3.5局部变量与全局变量作用域实例分析
Apr 30 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
Python 变量的创建过程详解
Sep 02 Python
python 字典的打印实现
Sep 26 Python
利用pyshp包给shapefile文件添加字段的实例
Dec 06 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
php以post形式发送xml的方法
2014/11/04 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
Vuex 入门教程
2018/01/10 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
Python实现豆瓣图片下载的方法
2015/05/25 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
初中班主任评语大全
2014/04/24 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
一般党员对照检查材料
2014/09/24 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
销售口号霸气押韵
2015/12/24 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python