Python 高效编程技巧分享


Posted in Python onSeptember 10, 2020

一、根据条件在序列中筛选数据

  • 假设有一个数字列表 data, 过滤列表中的负数
data = [1, 2, 3, 4, -5]
 
# 使用列表推导式
result = [i for i in data if i >= 0]
 
# 使用 fliter 过滤函数
result = filter(lambda x: x >= 0, data)
  • 学生的数学分数以字典形式存储,筛选其中分数大于 80 分的同学
from random import randint
 
d = {x: randint(50, 100) for x in range(1, 21)}
r = {k: v for k, v in d.items() if v > 80}

二、对字典的键值对进行翻转

  • 使用 zip() 函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

from random import randint, sample
 
s1 = {x: randint(1, 4) for x in sample("abfcdrg", randint(1, 5))}
d = {k: v for k, v in zip(s1.values(), s1.keys())}

三、统计序列中元素出现的频度

  • 某随机序列中,找到出现次数最高的3个元素,它们出现的次数是多少

方法1:

# 可以使用字典来统计,以列表中的数据为键,以出现的次数为值
from random import randint
 
# 构造随机序列
data = [randint(0, 20) for _ in range(30)]
 
# 列表中出现数字出现的次数
d = dict.fromkeys(data, 0)
 
for v in d:
  d[v] += 1

方法2:

# 直接使用 collections 模块下面的 Counter 对象
from collections import Counter
from random import randint
 
data = [randint(0, 20) for _ in range(30)]
 
c2 = Counter(data)
 
# 查询元素出现次数
c2[14]
 
# 统计频度出现最高的3个数
c2.most_common(3)
  • 对某英文文章单词进行统计,找到出现次数最高的单词以及出现的次数
import re
from collections import Counter
 
# 统计某个文章中英文单词的词频
with open("test.txt", "r", encoding="utf-8") as f:
  d = f.read()
 
# 所有的单词列表
total = re.split("\W+", d)
result = Counter(total)
print(result.most_common(10))

四、根据字典中值的大小,对字典中的项进行排序

  • 比如班级中学生的数学成绩以字典的形式存储,请按数学成绩从高到底进行排序

方法1:

# 利用 zip 将字典转化为元组,再用 sorted 进行排序
from random import randint
 
data = {x: randint(60, 100) for x in "xyzfafs"}
sorted(data)
data = sorted(zip(data.values(), data.keys()))

方法2:

# 利用 sorted 函数的 key 参数
from random import randint
 
data = {x: randint(60, 100) for x in "xyzfafs"}
data.items()
sorted(data.items(), key=lambda x: x[1])

五、在多个字典中找到公共键

  • 实际场景:在足球联赛中,统计每轮比赛都有进球的球员

第一轮:{"C罗": 1, "苏亚雷斯":2, "托雷斯": 1..}

第二轮:{"内马尔": 1, "梅西":2, "姆巴佩": 3..}

第三轮:{"姆巴佩": 2, "C罗":2, "内马尔": 1..}

from random import randint, sample
from functools import reduce
 
# 模拟随机的进球球员和进球数
s1 = {x: randint(1, 4) for x in sample("abfcdrg", randint(1, 5))}
s2 = {x: randint(1, 4) for x in sample("abfcdrg", randint(1, 5))}
s3 = {x: randint(1, 4) for x in sample("abfcdrg", randint(1, 5))}
 
# 首先获取字典的 keys,然后取每轮比赛 key 的交集。由于比赛轮次数是不定的,所以使用 map 来批量操作
# map(dict.keys, [s1, s2, s3])
 
# 然后一直累积取其交集,使用 reduce 函数
reduce(lambda x, y: x & y, map(dict.keys, [s1, s2, s3]))

以上就是Python 高效编程技巧分享的详细内容,更多关于Python 高效编程技巧的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python爬取网站数据保存使用的方法
Nov 20 Python
Linux 发邮件磁盘空间监控(python)
Apr 23 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
python和shell获取文本内容的方法
Jun 05 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
python实现可下载音乐的音乐播放器
Feb 25 Python
python实现批处理文件
Jul 28 Python
python使用ctypes库调用DLL动态链接库
Oct 22 Python
python操作redis数据库的三种方法
Sep 10 #Python
Python计算矩阵的和积的实例详解
Sep 10 #Python
python如何运行js语句
Sep 09 #Python
python如何爬取动态网站
Sep 09 #Python
python如何停止递归
Sep 09 #Python
python能做哪些生活有趣的事情
Sep 09 #Python
Python 连接 MySQL 的几种方法
Sep 09 #Python
You might like
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
JavaScript延迟加载
2021/03/09 Javascript
addRule在firefox下的兼容写法
2006/11/30 Javascript
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
js style动态设置table高度
2014/10/21 Javascript
javascript 数组操作详解
2015/01/29 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
Java分治归并排序算法实例详解
2017/12/12 Python
python实现简单遗传算法
2018/03/19 Python
python清除函数占用的内存方法
2018/06/25 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
django的ORM操作 增加和查询
2019/07/26 Python
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
参观监狱心得体会
2014/01/02 职场文书
工程材料采购方案
2014/05/18 职场文书
团队会宣传标语
2014/10/09 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
python实现简单的名片管理系统
2021/04/26 Python
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang