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 dict remove数组删除(del,pop)
Mar 24 Python
Python常用随机数与随机字符串方法实例
Apr 09 Python
详解python之简单主机批量管理工具
Jan 27 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
python创建ArcGIS shape文件的实现
Dec 06 Python
Python命令行click参数用法解析
Dec 19 Python
Python换行与不换行的输出实例
Feb 19 Python
区分python中的进程与线程
Aug 13 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 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
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
php GUID生成函数和类
2014/03/10 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
Python实现二分法算法实例
2015/02/02 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
python中logging库的使用总结
2017/10/18 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
致裁判员加油稿
2014/02/08 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
立志成才演讲稿
2014/09/04 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
小学教代会开幕词
2016/03/04 职场文书
英镑符号 £
2022/02/17 杂记
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫