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冒泡排序算法的实现代码
Nov 21 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
May 24 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
对python sklearn one-hot编码详解
Jul 10 Python
python爬虫基础教程:requests库(二)代码实例
Apr 09 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
python接口调用已训练好的caffe模型测试分类方法
Aug 26 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
Python模块相关知识点小结
Mar 09 Python
PyTorch的torch.cat用法
Jun 28 Python
Python 微信公众号文章爬取的示例代码
Nov 30 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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脚本的10个技巧(8)
2006/10/09 PHP
php a simple smtp class
2007/11/26 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
2010/03/27 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
php curl选项列表(超详细)
2013/07/01 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
python抓取网页内容示例分享
2014/02/24 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
VC++笔试题
2014/10/13 面试题
纪检干部对照检查材料
2014/08/22 职场文书
公司租房协议书范本
2014/10/08 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
公司考勤管理制度
2015/08/04 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL