Python是一种功能强大的解释型编程语言。我们可以通过下面的10条优化技巧来减少代码量并提高代码的运行效率。

  1. 善用列表(list)推导式

问题:输出1万内每个数的平方。 发现用列表推导式所用时间更少。

from timeit import default_timer as timerstart = timer()
square =[]
for n in range(10000):square.append(pow(n,2))
end = timer()
print("优化前耗时:",end - start)#优化后
start2=timer()
square=[pow(n,2) for n in range(10000)]
end2=timer()
print("优化后耗时:",end2 - start2)
print(square)

  1. 用Python生成器节约运行内存

如果对1万内每个数的平方求和,换用Python生成器来存储过程数据,我们发现占用的内存更少。

import sys
square = [n**2 for n in range(10000)]
print(sum(square))
print(sys.getsizeof(square),'字节') #优化后
square = (n\*\*2 for n in range(10000))
print(sum(square))
print(sys.getsizeof(square),'字节')

  1. 用sorted()函数快速实现序列元素的升序排列,用reverse=True实现降序
lst=[20, 40, 20, 20, 40, 60, 70]
print(sorted(list(lst),reverse=True))
  1. 用集合set快速过滤掉重复元素
lst=[20, 40, 20, 20, 40, 60, 70]
# print(sorted(list(lst),reverse=True))
print(set(lst))
  1. 用enumerate遍历输出序列结构中元素的位置和值
    用enumerate后,输出的结果不变,但代码更简洁。
dogs = ['Harley', 'Phantom', 'Lucky', 'Dingo']
count = 1
for name in dogs:print(count, name)count += 1
#优化后
print('优化后')
for i,name in enumerate(dogs,start=1):print(i,name)
  1. 用字典dictionary中get() 和setdefault()设置默认键的值
roman_nums = {'I':1, 'II':2, 'III':3, 'IV':4 }
# value=roman_nums['V']  # 访问不存在的键值会报错 KeyError: 'V'
value=roman_nums.get('V',5)
print('value=',value)
print(roman_nums)
value = roman_nums.setdefault('V',5)
print(roman_nums)

  1. 用Counter统计序列结构中出现次数最多的元素
#统计出现次数最多的元素
#首先引入该方法
from collections import Counter
s='hello'
print(Counter(s)) #法二
print([(x,s.count(x)) for x in set(s)])
  1. f-Strings (Python 3.6+)格式化字符串
name,major = "world","computer science"s="Hello, %s. I major in %s." % (name,major)
s1="Hello, {}. I major in {}.".format(name, major)
s2=f"Hello, {name}. I major in {major}." #推荐用法
print(s,s1,s2,sep='\n')
  1. join()实现子字符串的拼接
s=['H','e','l','l','o']
s1=''
for x in s:s1+=x
print(s1)s1=''.join(s)#推荐用法
print(s1)
  1. 字典合并的N种方法
#法一
x = {'a': 1, 'b': 2}
y = {'b': 10, 'c': 11}
x.update(y)
print(x)
#法二 Python3.9+
z = x | y
print(z)
#法三 Python3.5+
z = {**x, **y}
print(z)
#法四
z = dict(list(x.items()) + list(y.items()))
print(z)

如果喜欢,不忘了在微信文章的下面一键三连(分享,点赞和收藏)。关注微信公众号“乐享Python”。

10条Python代码优化技巧相关推荐

  1. exists的用法 python_5 年 Python ,总结的 10 条 Python 使用技巧

    今天给大家分享 10 个我平时整理非常实用的 Python 开发小技巧,内容目录如下: 值得一提的是,这 10 个技巧全部收录在我自己写的 <Python黑魔法指南>里. 1. 如何在运行 ...

  2. 【Python基础】Pandas笔记---通过比赛整理出的10条Pandas实用技巧

    点击上方"潜心的Python小屋"关注我们,第一时间推送优质文章. 前言 大家好,我是潜心.最近还在参加某比赛,将pandas对数据预处理的方法进行了总结,以下列出的10条是我觉得 ...

  3. 偏执却管用的 10 条 Java 编程技巧

    经过一段时间的编码(咦,我已经经历了将近20年的编程生涯,快乐的日子总是过得很快),我们开始感谢那些好习惯.因为,你知道- "任何可能出错的事情,最后都会出错." 这就是人们为什么 ...

  4. 偏执却管用的10条Java编程技巧

    转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/52313668 http://www.ganecheng.tech/blog/523 ...

  5. 10个python使用技巧

    1. 用ZIP处理列表 假设要合并相同长度的列表并打印结果.同样有一种更通用的方式,即用zip()函数获得想要的结果,代码如下: countries= ['France', 'Germany', 'C ...

  6. Linux学习中我的10条建议和技巧

    很多技术,没有所谓简单与复杂,只有知道与不知道,就像一层纸,捅透了就能看到后面的世界.任何看上去复杂的事物,拆解到最后就会发现都是由最简单的原理一层一层构成,每一层都会向上一层提供API,所有的事物都 ...

  7. 掌握这10个Python小技巧,让你敲代码速度快5倍不止

    问各位一个问题,你有木有经历过这一的场景: 老板让你和同事同事敲代码,同样的时间,别人却比你做的快了很多倍,而且做的还很不错? 其实很多时候也不是你不厉害,更多的是很多基础的效率操作,你没有发现. P ...

  8. 10个Python简单技巧,让数据分析速度加快不止一倍(附零基础学习资料)

    前言 有时,在编程领域的一个小技巧.一个小的快捷方式或附加组件能极大地提高生产力.下文中的建议和技巧有些可能很常见,有些则较新颖,相信你在将来处理数据分析项目时会派上用场. (文末送读者福利) 1. ...

  9. 动力电池编码追溯系统_学习编码时如何保持动力(10条可行的技巧!)

    动力电池编码追溯系统 This post was originally published on Coder-Coder.com. 该帖子最初发布在Coder-Coder.com上 . Does th ...

最新文章

  1. Open3d学习计划—高级篇 2(彩色点云配准)
  2. 花5分钟看这篇之前,你才发现你不懂RESTful
  3. 具有只读属性的ComboBox
  4. linux中make的用法
  5. 读取Exchange的用户未读邮件数的几种方法
  6. http header 具体解释
  7. CentOS 5.8 Zimbra邮件系统安装与配置
  8. react jest测试_如何设置Jest和Enzyme来测试React Native应用
  9. 计算SharePoint两个日期和时间字段之间的时间差值
  10. MySQL 5.7原生JSON格式支持
  11. 捷联惯导更新算法及误差分析汇总
  12. 如何通过QQ机器人技术实现禅道bug的自动提交功能
  13. element UI指定下拉框样式修改
  14. 2022最新Funtool趣工具源码+iApp软件库/工具箱源码
  15. 认识QA, 游戏测试工程师究竟是做什么的?
  16. Hibernate 的检索策略
  17. 程序员编程入门一定知道!程序员需要学什么?
  18. 华为--三层交换实验(原理与实验详情)
  19. java prase xml error
  20. 使用Java模拟登录

热门文章

  1. mysql_upgrade 升级_MySQL 8.0.16 告别mysql_upgrade升级方式
  2. MPB以及周围软件的浅谈介绍
  3. 网络营销推广的渠道有哪些?
  4. animate.css 官方,Animate中文网
  5. NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis
  6. TMS320C645x DSP SRIO寄存器(五)——LSU和其他特殊事件中断
  7. php分页高亮,PHP分页函数代码(简单实用型)
  8. 淘宝特价版多店铺订单管理应该怎么做?初征来教你
  9. android手机远程windows10,微软推出适用于Windows 10的Android远程控制
  10. SpringBoot Druid数据库密码加密