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抓取京东商城手机列表url实例代码
Dec 18 Python
python微信公众号开发简单流程
Mar 23 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
python 将有序数组转换为二叉树的方法
Mar 26 Python
python3调用windows dos命令的例子
Aug 14 Python
使用python实现多维数据降维操作
Feb 24 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
详解Python中的Lock和Rlock
Jan 26 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
Python中seaborn库之countplot的数据可视化使用
Jun 11 Python
Python Pandas常用函数方法总结
Jun 15 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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
php读取mysql的简单实例
2014/01/15 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
初识Node.js
2015/03/20 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
制药工程专业毕业生推荐信
2013/12/24 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
关于保护环境的建议书
2014/05/13 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
个人简历求职信范文
2015/03/20 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python