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 相关文章推荐
python3中int(整型)的使用教程
Mar 23 Python
pytorch训练imagenet分类的方法
Jul 27 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 Python
Django数据模型中on_delete使用详解
Nov 30 Python
Python实现简单猜数字游戏
Feb 03 Python
pytorch查看网络参数显存占用量等操作
May 12 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
Mysql的常用命令
2006/10/09 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
Js 刷新框架页的代码
2010/04/13 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
MySQL适配器PyMySQL详解
2017/09/20 Python
python全栈知识点总结
2019/07/01 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Python的形参和实参使用方式
2019/12/24 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
个人作风剖析材料
2014/02/02 职场文书
团购业务员岗位职责
2014/03/15 职场文书
银行求职自荐书
2014/06/25 职场文书
自主招生英文自荐信
2015/03/25 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书