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编写爬虫的基本模块及框架使用指南
Jan 20 Python
Python实现的递归神经网络简单示例
Aug 11 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
python三大神器之fabric使用教程
Jun 10 Python
python用Configobj模块读取配置文件
Sep 26 Python
Python Http请求json解析库用法解析
Nov 28 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 Python
Python 的 f-string 可以连接字符串与数字的原因解析
Feb 20 Python
Python自动化爬取天眼查数据的实现
Jun 15 Python
关于python爬虫应用urllib库作用分析
Sep 04 Python
利用Python实现翻译HTML中的文本字符串
Jun 21 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连接Oracle for NT 远程数据库
2006/10/09 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
jquery中获取select选中值的代码
2011/06/27 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
requests和lxml实现爬虫的方法
2017/06/11 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
Python如何对齐字符串
2020/07/30 Python
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
企业管理培训感言
2014/01/27 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
交通事故协议书范本
2014/11/18 职场文书
经费申请报告范文
2015/05/18 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js