Python 高效编程技巧分享
作者:新码农 发布时间:2022-12-13 10:23:43
标签:python,编程,技巧
一、根据条件在序列中筛选数据
假设有一个数字列表 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]))
来源:https://www.addcoder.com/blog/article_detail/k90s6l8e/


猜你喜欢
- 下载此插件 并将其解压后的my_focus文件夹安放在KindEditor插件目录下(KindEditor所在目录/plugins/)如:H
- 测试环境Python 3.6.2代码实现非多线程场景下使用新建并保存EXCELimport win32com.clientfrom win3
- zip()的作用先看一下语法:zip(iter1 [,iter2 [...]]) —> zip objectPython的内置help
- 1、为什么淘宝的手机频道页面,竟然会有笔记本、数码相机、随身听,甚至是游戏之类的栏目,而且还有一个“数码·生活”栏目是包括以上这些设备的综合
- 安装并导入模块打开命令行窗口,输入:pip install -i https://mirrors.aliyun.com/pypi/simpl
- 1. 线程的概念:线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程
- 近几年来,nosql大行其道,json更是火的一塌糊涂,作为数据库的元老,mysql在5.7版本中添加了对json数据的支持。这片博客主要介
- 一直以来都有这样一个困惑,那就是打开页面间的链接时是在原窗口转换还在新窗口打开呢?如果是在原窗口里转换页面的话,那我还想使用原页面的信息呢?
- MySQL8服务无法正常启动的解决(1053错误)第一种方法初始化后在Mysql的根目录会生成 data 数据库文件夹,如果启动服务失败,很
- 1 、据说python3就没有这个问题了2 、u'字符串' 代表是unicode格式的数据,路径最好写成这个格式,别直接跟字
- 函数的作用域python中的作用域分4种情况:L:local,局部作用域,即函数中定义的变量;E:enclosing,嵌套的父级函数的局部作
- Ubuntu Server下启动/停止/重启MySQL数据库的三种方式系统环境:ubuntu server 12.10 x64(mysql为
- 写桌面程序或有些特殊操作的,经常需要访问剪切板。python有专用的模块,可以很方便简单的操作剪切板如下:#coding:utf-8impo
- 由于下学期报了一个Python的入门课程所以寒假一直在自己摸索,毕竟到时候不能挂科,也是水水学分最近心血来潮打算试试爬一下百度翻译肝了一天终
- LSTM介绍关于LSTM的具体原理,可以参考:https://www.jb51.net/article/178582.htmhttps://
- 实现效果图如下:当我点击 + 按钮时,会添加一行输入框组;当点击 - 按钮时,会删除这一行输入框组html代码如下:<div clas
- exam = { 'math': '95', 'eng': '96',
- 目录1、压缩并输出tar.gz文档2、tar解压缩查看官方文档,官方自带的演示:// 官方演示package mainimport ( &n
- 需求:需要在pycharm中跑一个深度学习的项目但是tensorflow包导不入问题分析:当前使用的是anaconda的3.8版本,无法正常
- 一、前言准备编写一个篮球游戏,运动员带球跑,跳起投篮。在每帧图片中包括运动员和篮球,使用多帧图片,实现运动员运球跑动的效果。运动员运球跑动作