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使用wxPython打开并播放wav文件的方法
Apr 24 Python
python机器学习实战之K均值聚类
Dec 20 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
Python序列循环移位的3种方法推荐
Apr 09 Python
详解python-图像处理(映射变换)
Mar 22 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
Python连接Impala实现步骤解析
Aug 04 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 Python
Python创建自己的加密货币的示例
Mar 01 Python
一行代码python实现文件共享服务器
Apr 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
php新建文件自动编号的思路与实现
2011/06/27 PHP
php标签云的实现代码
2012/10/10 PHP
基于empty函数的判断详解
2013/06/17 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
关于php中一些字符串总结
2016/05/05 PHP
javascript全局变量封装模块实现代码
2012/11/28 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
python使用xslt提取网页数据的方法
2018/02/23 Python
对python中的pop函数和append函数详解
2018/05/04 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
世界汽车零件:World Car Parts
2019/09/04 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
园林施工员岗位职责
2013/12/11 职场文书
初二生物教学反思
2014/02/03 职场文书
项目投资意向书
2014/04/01 职场文书
市级文明单位申报材料
2014/05/07 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书