Python高效编程技巧
如何在列表,字典,集合中根据条件筛选数据
1.过滤掉列表[-1,-2,-3,4,5,6]中的负数和0
方法1,for循环
data = [-1, -2, -3, 4, 5, 6] res = [] for i in data: if i > 0: res.append(i) print(res)
方法2 filter
data = [-1, -2, -3, 4, 5, 6] res = filter(lambda x: x > 0, data) print(list(res))
方法3列表解析
data = [-1, -2, -3, 4, 5, 6] res = [x for x in data if x > 0] print(res)
性能对比:列表解析优于filter优于for循环。
补充,生成随机数字列表:
from random import randint data = [randint(-10, 10) for _ in range(10)] print(data) # [5, 6, 6, -10, 6, -10, -7, 5, 5, -9]
2.筛选出字典{'lcg':100,'xiaoming':50,'wang':89,'hong':93}中值高于90的项
dic = {'lcg': 100, 'xiaoming': 50, 'wang': 89, 'hong': 93} res = {k: y for k, y in dic.items() if y > 90} print(res) # {'lcg': 100, 'hong': 93}
3.筛选出集合{6,7,8,9,66,77}中能被3整除的元素
s = {6, 7, 8, 9, 66, 77} res = {i for i in s if i % 3 == 0} print(res) # {9, 66, 6}
如何为元祖中的每个元素命名,提高程序的可读性
像上面这样的用0,1,2索引的方式获取元祖中的元素,实际上很不容易理解,也不容易维护。
解决方案:
方案1,拆包
t = ('jim', 19, 'male', 'jim666@gmail.com') NAME, AGE, SEX, EMAIL = 0, 1, 2, 3 print(t[NAME]) # jim
方案2,使用标准库里面的collections.namedtuple代替内置的tuple
from collections import namedtuple Student = namedtuple('Student', ['name', 'age', 'sex', 'email']) # s = Student(name='jim',age= 19, sex='male', email='jim666@gmail.com') s = Student('jim', 19, 'male', 'jim666@gmail.com') print(s.name) # jim print(s.age) # 19 print(s) # Student(name='jim', age=19, sex='male', email='jim666@gmail.com') print(isinstance(s,tuple)) # True
如何统计出序列中元素出现频度
1.使用collections.Counter对象。将序列传入Counter构造器,得到对象是元素额度的字典
Counter.most_common(n)方法得到频度最高的n个元素的列表。
from random import randint data = [randint(0, 10) for _ in range(20)] print(data) # [6, 2, 10, 5, 10, 9, 3, 10, 1, 6, 9, 9, 3, 4, 7, 3, 0, 7, 10, 0] from collections import Counter c = Counter(data) print(c) # Counter({10: 4, 9: 3, 3: 3, 6: 2, 7: 2, 0: 2, 2: 1, 5: 1, 1: 1, 4: 1}) print(c.most_common()) # [(10, 4), (9, 3), (3, 3), (6, 2), (7, 2), (0, 2), (2, 1), (5, 1), (1, 1), (4, 1)] print(c.most_common(3)) # [(10, 4), (9, 3), (3, 3)]
如何根据字典中值的大小,对字典中的项进行排序
1.使用内置函数sorted
# 首先构造一个字典 from random import randint dic = {k: randint(60, 100) for k in 'abcdefg'} print(dic) # {'a': 82, 'b': 64, 'c': 87, 'd': 75, 'e': 65, 'f': 64, 'g': 79} # sorted的作用就是对序列进行排序 print(sorted([1, 3, 5, 2, 4, 6])) # [1, 2, 3, 4, 5, 6] print(sorted(dic.items(), key=lambda x: x[1])) # [('b', 64), ('f', 64), ('e', 65), ('d', 75), ('g', 79), ('a', 82), ('c', 87)]
Python高效编程技巧的更多相关文章
- Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据
Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...
- 18个Python高效编程技巧,Mark!
初识Python语言,觉得python满足了我上学时候对编程语言的所有要求.python语言的高效编程技巧让我们这些大学曾经苦逼学了四年c或者c++的人,兴奋的不行不行的,终于解脱了.高级语言,如果做 ...
- Python高效编程技巧实战 实战编程+面试典型问题 中高阶程序员过渡
下载链接:https://www.yinxiangit.com/603.html 目录: 如果你想用python从事多个领域的开发工作,且有一些python基础, 想进一步提高python应用能力 ...
- Python高效编程的19个技巧
初识Python语言,觉得python满足了我上学时候对编程语言的所有要求.python语言的高效编程技巧让我们这些大学曾经苦逼学了四年c或者c++的人,兴奋的不行不行的,终于解脱了.高级语言,如果做 ...
- python高级编程技巧
由python高级编程处学习 http://blog.sina.com.cn/s/blog_a89e19440101fb28.html Python列表解析语法[]和生成 器()语法类似 [expr ...
- 【Matlab编程】Matlab高效编程技巧
1.默认状态下,matlab显示精度是short型,而默认的计算精度是double型,并且显示精度与计算精度没有关系. 2. 一只失明的猫的问题:注意方法! 3.给数组预分配空间是基本的高效编程准则之 ...
- 18个python的高效编程技巧
01 交换变量 >>>a=3 >>>b=6 这个情况如果要交换变量在c++中,肯定需要一个空变量.但是python不需要,只需一行,大家看清楚了 >>& ...
- Python高级编程技巧(转)
译文:http://blog.jobbole.com/61171/ 本文展示一些高级的Python设计结构和它们的使用方法.在日常工作中,你可以根据需要选择合适的数据结构,例如对快速查找性的要求.对数 ...
- 符合语言习惯的Python优雅编程技巧
Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然.要写出 Pythonic(优雅的.地道的.整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优秀 ...
随机推荐
- WebService远程调用技术
1.---------------------------------介绍-------------------------------------------------- (1)远程调用:一个系统 ...
- Notepad++同一窗口显示左右显示两份文档
Notepad++同一窗口显示左右显示两份文档 直接打开一份文档,test1.txt 再打开第二份文档,test2.txt,会显示成这样: 两份文档是以标签的形式展示的,有时需要同时查看两份文档, ...
- Spring Boot 揭秘与实战 源码分析 - 开箱即用,内藏玄机
文章目录 1. 开箱即用,内藏玄机 2. 总结 3. 源代码 Spring Boot提供了很多”开箱即用“的依赖模块,那么,Spring Boot 如何巧妙的做到开箱即用,自动配置的呢? 开箱即用,内 ...
- lftp的安装
lftp的安装 安装依赖的包 yum -y install make readline-devel gnutls* 解压上传的包 tar -jxf lftp-4.0.1.tar.bz2 cd到解压 ...
- post-image.sh hacking
#********************************************************************************* #* post-image.sh ...
- Android ADT 工具下载地址
/********************************************************************************* * Android ADT 工具下 ...
- MongDB篇,第一章:数据库知识1
MongDB 数据库知识1 程序 = 数据结构 + 算法 数据存储阶段 1,文件管理阶段 (.txt .doc .xls) 优点: 数据可以长期保存:可以存储大量的数据:使用简单 缺点 ...
- Pytorch加载模型推荐的方法
https://stackoverflow.com/questions/42703500/best-way-to-save-a-trained-model-in-pytorch
- python selenium自动化点击页面链接测试
python selenium自动化点击页面链接测试 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回 ...
- Blender 简单齿轮驱动
直入主题. 1. 用户设置里,勾选扩展网格(Add Mesh: Extra Objects):这样可以直接新增简单齿轮了,免得自己再造轮子. 2. 新增2个齿轮,12赤为主动轮,驱动24赤的被动轮: ...