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中lambda的用法及其与def的区别解析
Jul 28 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
Python异常处理操作实例详解
May 10 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
Python 实现Windows开机运行某软件的方法
Oct 14 Python
想学python 这5本书籍你必看!
Dec 11 Python
python实现beta分布概率密度函数的方法
Jul 08 Python
python中的Elasticsearch操作汇总
Oct 30 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 Python
基于python实现上传文件到OSS代码实例
May 09 Python
利用Python实时获取steam特惠游戏数据
Jun 25 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函数in_array()使用详解
2014/08/20 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
php简单复制文件的方法
2016/05/09 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
2019/05/17 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
Python贪心算法实例小结
2018/04/22 Python
python中int与str互转方法
2018/07/02 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
python和c语言的主要区别总结
2019/07/07 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
你的自行车健身专家:FaFit24
2016/11/16 全球购物
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
部队万能检讨书
2014/02/20 职场文书
投资意向书范本
2014/04/01 职场文书
经典导游欢迎词
2015/01/26 职场文书
报名委托书
2015/01/29 职场文书
幼师求职自荐信
2015/03/26 职场文书
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers