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爬取Coursera课程资源的详细过程
Nov 04 Python
Django Admin实现上传图片校验功能
Mar 06 Python
对python pandas读取剪贴板内容的方法详解
Jan 24 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
django 实现手动存储文件到model的FileField
Mar 30 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
Python pip安装模块提示错误解决方案
May 22 Python
Python docutils文档编译过程方法解析
Jun 23 Python
python语言time库和datetime库基本使用详解
Dec 25 Python
Python利器openpyxl之操作excel表格
Apr 17 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
JAVA/JSP学习系列之六
2006/10/09 PHP
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
php获取错误信息的方法
2015/07/17 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
python求众数问题实例
2014/09/26 Python
python根据路径导入模块的方法
2014/09/30 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
Python subprocess模块常见用法分析
2018/06/12 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
五一服装活动方案
2014/01/11 职场文书
班级口号大全
2014/06/09 职场文书
组工干部演讲稿
2014/09/02 职场文书
开发房地产协议书
2014/09/14 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
关于做家务的心得体会
2016/01/23 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android
mysql函数之截取字符串的实现
2022/08/14 MySQL