分享Python中四个不常见的小技巧

目录
  • 1. 引言
  • 2. 获取 n 个最大数字
  • 3. 获取 n 个最小数字
  • 4. 删除字符串的特定部分
  • 5. 从列表中删除重复元素
  • 6. 总结

1. 引言

在编程界,每个人都希望自己可以写出世界上最好的代码,其实最好的代码往往需要具备最好的代码质量。勤能补拙,善于总结往往可以快速提升大家的编程技巧。 本文重点对日常中不常使用的四个Python技巧进行简明阐述,希望可以提升大家编码时的工作效率。 闲话少说,我们直接开始吧!

2. 获取 n 个最大数字

我们知道,要获得列表中的最大数字,我们往往使用​​max​​函数,

如下:

max([15, 21, 30, 20])
# ouput: 30

但是如果我们将其进行扩展,获取n个最大数字的列表呢?学过数据结构的同学,也许能想到来构建大顶堆数据结构,嗯嗯,在Python中有一个名为​​heapq​​的模块,可以非常方便的来实现上述功能。

如下所示:

import heapq
heap = [10, 5, 18, 1, 100]
# heapq.nlargest(n, iterable)
n_largest_numbers = heapq.nlargest(3, heap)

# show result
print(n_largest_numbers)

结果输出如下:

[100, 18, 10]

3. 获取 n 个最小数字

正如我们对​​max​​函数了解的一样,我们可以知道​​min​​函数的作用:

min([15, 21, 30, 20])
# ouput: 15

大家知道数据结构中通过构建大顶堆可以方便的求出n个最大数字,所以我们也可以通过小顶堆来获取n个最小数字,举例如下:

import heapq
heap = [10, 5, 18, 1, 100, 8, 7]
# heapq.nsmallest(n, iterable)
n_smallest_numbers = heapq.nsmallest(4, heap)
# show result
print(n_smallest_numbers)

输出如下:

[1, 5, 7, 8]

4. 删除字符串的特定部分

假设我们有字符串​​+-+-+Python​​,如果此时我们只需要获取上述字符串中的部分即​​Python​​,此时我们可以使用python字符串模块中的​​removeprefix​​函数,

示例如下:

myString = "+-+-+Python"
new_string = myString.removeprefix("+-+-+")
# show result
print(new_string)

输出如下:

Python

5. 从列表中删除重复元素

为了实现从列表中删除重复元素,也许我们知道可以通过集合进行转换,如下:

li = [10, 15, 10, 10, 5, 5]
without_duplicates = list(set(li))
print(without_duplicates)

输出如下:

[10, 5, 15]

但是上述实现并不是非常专业的实现,因为输出结果没有按原先次序输出,所以让我向大家展示第二种方式:

li = [10, 15, 10, 10, 5, 5]
without_duplicates = dict.fromkeys(li)
print(list(without_duplicates))

输出如下:

[10, 15, 5]

6. 总结

python中的一些技巧可以帮助我们编写更高效的代码。本文中我们介绍了四个小技巧可以帮助我们做一些了不起的事情。最后希望大家可以喜欢我写的简单的小文章,并确保可以学到新的东西。

到此这篇关于分享Python中四个不常见的小技巧的文章就介绍到这了,更多相关Python不常见技巧内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 了解不常见但是实用的Python技巧

    1.交换变量值 2.将一列表中的所有元素拼接成字符串 3.查找list中最高频率的值 4.检查两个单词是否是字谜(组成的字母和对应数量一致) 5.反转字符串 6.反转列表 7.转置2维数组 8.链式比较 9.链式函数调用 10.复制列表 11.Dictionary Get 12.按值排序字典 13.For Else 14.将列表转换为逗号分隔的字符串 15.合并字典 16.list中的最小和最大索引 17.从列表中删除重复项 查看英文原文 :https://hackernoon.com/pyth

  • Python同步方法变为异步方法的小技巧分享

    目录 背景 怎么做? Asyncer awaitable aioify 总结 背景 在我们平时的FastApi工作中,经常会用到一些异步的操作,为了保持一致,我们一般会编写配套的异步代码. 但如果我们提供了类似jmeter BeanShell的可执行代码的功能给用户,那用户还能给你编写异步代码吗?那显然是不可能的事情. 还有一种情况,当我们引入第三方包,比如一些oss的库,里面天然是同步方法,有内置的requests请求,你想不阻塞整个fastapi服务,也是需要将他们异步化的. 怎么做? 这块

  • 卡尔曼滤波数据处理技巧通俗理解及python实现

    目录 学习前言 什么是卡尔曼滤波 卡尔曼滤波是怎么滤波的 卡尔曼滤波实例 卡尔曼滤波的python代码实现 学习前言 好久没用过arduino了,接下去要用arduino和超声波做个小实验,对于读取的模拟量肯定要进行滤波呀,不然这模拟量咋咋呼呼的怎么用 什么是卡尔曼滤波 先看看百度百科解释哈:卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法.由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程.

  • Python小技巧练习分享

    目录 1.反转数字 2.类的说明文档 3.设置 Python 文件的编码 4.旋转字符串 5.实现控制台滚动条 6.print 函数直接写入文件 7.合并 2 个列表 1.反转数字 问题场景: 把数字 789 转换为 987. 典型的数字翻转问题. 解决思路: 将数字的百位十位个位拆解出来,就解开了 编码如下: def reverse_number(number): baiwei = int(number/100) shiwei = int(number%100/10) gewei = int(

  • Python中的字典合并与列表合并技巧

    目录 前言 1 合并字典 2 合并列表 前言 又到了每日分享Python小技巧的时候了,今天给大家分享的是Python中两种常见的数据类型合并方法. 1 合并字典 在某些场景下,我们需要对两个(多个)字典进行合并.例如需要将如下两个字典进行合并: dict1 = {"a": 2, "b": 3, "c": 5} dict2 = {"a": 1, "c": 3, "d": 8} 且合并后的

  • Python Pandas处理CSV文件的常用技巧分享

    目录 读取Pandas文件 统计列值出现的次数 筛选特定列值 遍历数据行 绘制直方图(柱状图) Pandas处理CSV文件,分为以下几步: 读取Pandas文件 统计列值出现的次数 筛选特定列值 遍历数据行 绘制直方图(柱状图) 读取Pandas文件 df = pd.read_csv(file_path, encoding='GB2312') print(df.info()) 注意:Pandas的读取格式默认是UTF-8,在中文CSV中会报错: UnicodeDecodeError: 'utf-

  • python绘制子图技巧之plt.subplot、plt.subplots及坐标轴修改

    目录 前言 plt.subplot plt.subplots 坐标轴修改 总结 前言 偶然发现python(matplotlib)中绘制子图有两种方法,一种是plt.subplot,另一种是plt.subplots,这篇博客说一下这两种方法的区别,用法,以及常用的一些函数. plt.figure的作用是定义一个大的图纸,可以设置图纸的大小.分辨率等,例如 fig = plt.figure(figsize=(16,16),dpi=300) # 初始化一张画布 plt.plot() 是直接在当前活跃

  • 分享Python中四个不常见的小技巧

    目录 1. 引言 2. 获取 n 个最大数字 3. 获取 n 个最小数字 4. 删除字符串的特定部分 5. 从列表中删除重复元素 6. 总结 1. 引言 在编程界,每个人都希望自己可以写出世界上最好的代码,其实最好的代码往往需要具备最好的代码质量.勤能补拙,善于总结往往可以快速提升大家的编程技巧. 本文重点对日常中不常使用的四个Python技巧进行简明阐述,希望可以提升大家编码时的工作效率. 闲话少说,我们直接开始吧! 2. 获取 n 个最大数字 我们知道,要获得列表中的最大数字,我们往往使用​

  • 关于Python中进度条的六个实用技巧分享

    目录 1 简介 2 tqdm中实用的6个特性 2.1 autonotebook自动切换进度条风格 2.2 延迟渲染进度条 2.3 自定义进度条色彩 2.4 自主控制的进度上限 2.5 针对enumerate.zip和map的替代 2.6 设置进度条“用完即逝” 总结 1 简介 费老师我在几年前写过的一篇文章(https://www.jb51.net/article/243348.htm)中,介绍过tqdm这个在当下Python圈子中已然非常流行的进度条库,可以帮助我们为任何具有循环迭代过程的代码

  •  分享Python 中的 7 种交叉验证方法

    目录 一.什么是交叉验证? 二.它是如何解决过拟合问题的? 1.HoldOut交叉验证 2.K折交叉验证 3.分层K折交叉验证 4.LeavePOut交叉验证 5.留一交叉验证 6.蒙特卡罗交叉验证(ShuffleSplit) 7.时间序列交叉验证 在任何有监督机器学习项目的模型构建阶段,我们训练模型的目的是从标记的示例中学习所有权重和偏差的最佳值. 如果我们使用相同的标记示例来测试我们的模型,那么这将是一个方法论错误,因为一个只会重复刚刚看到的样本标签的模型将获得完美的分数,但无法预测任何有用

  • 分享python中matplotlib指定绘图颜色的八种方式

    目录 1.使用[0,1]之间浮点数值表示RGB/RGBA颜色值 2.使用十六进制RGB/RGBA字符串表示颜色 3.使用颜色首字母 4.使用X11/CSS4的颜色名 5.使用xkcd颜色 6.Tableau的T10种颜色 7.CN表示的循环颜色 8.字符串表示的浮点数值 9.绘图函数与汇总 在使用matplotlib的pyplot库进行绘图时,经常会发现各种开源代码指定“color”的方式并不一致.发现共有8种指定color的方式. 8种方式如下: 使用[0, 1]之间浮点数值表示RGB/RGB

  • python中字符串String及其常见操作指南(方法、函数)

    目录 下标与切片 常见方法 查找 替换 分割 大小写格式化 对齐格式化 清除空白字符 检查 补充:16个常用函数 总结 注意:对字符串的所有操作,原始数据(即原字符串)不变 !(字符串是不可变类型) 对原字符串操作会返回一个操作后的数据, 可以使用变量去接受数据 ----------------------------------------------------------------------------------------------------------------------

  • 详解Python中四种关系图数据可视化的效果对比

    python关系图的可视化主要就是用来分析一堆数据中,每一条数据的节点之间的连接关系从而更好的分析出人物或其他场景中存在的关联关系. 这里使用的是networkx的python非标准库来测试效果展示,通过模拟出一组DataFrame数据实现四种关系图可视化. 其余还包含了pandas的数据分析模块以及matplotlib的画图模块. 若是没有安装这三个相关的非标准库使用pip的方式安装一下即可. pip install pandas -i https://pypi.tuna.tsinghua.e

  • 分享Python 的24个编程超好用技巧

    目录 1.ALLORANY 2.BASHPLOTIB 3.COLLECTIONS 4.DIR 5.EMOJI 6.FROM_FUTURE_IMPORT 7.GEOPY 8.HOWDOI 9.INSPECT 10.JEDI 11.**KWARGS 12.LISTCOMPREHENSIONS 13.MAP 14.NEWSPAPER3K 15.OPERATOROVERLOADING(操作符重载) 16.PPRINT 17.QUEUE(队列) 18.sh 19.TYPEHINT(类型提示) 20.UUI

  • python爬虫抓取时常见的小问题总结

    目录 01 无法正常显示中文? 解决方法 02 加密问题 03 获取不到网页的全部代码? 04 点击下一页时网页网页不变 05 文本节点问题 06 如何快速找到提取数据? 07 获取标签中的数据 08 去除指定内容 09 转化为字符串类型 10 滥用遍历文档树 11 数据库保存问题 12 爬虫采集遇到的墙问题 逃避IP识别 变换请求内容 降低访问频率 慢速攻击判别 13 验证码问题 正向破解 逆向破解 前言: 现在写爬虫,入门已经不是一件门槛很高的事情了,网上教程一大把,但很多爬虫新手在爬取数据

  • 11个教程中不常被提及的JavaScript小技巧(推荐)

    1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是成员的值都是唯一的,没有重复的值.结合扩展运算符(...)我们可以创建一个新的数组,达到过滤原数组重复值的功能. const array = [1, 2, 3, 3, 5, 5, 1]; const uniqueArray = [...new Set(array)]; console.log(uniqueArray); // [1, 2, 3, 5] 在ES6之前,我们如果想要实现这个功能的话,需要的处理代码要多很多. 这个技巧的适

随机推荐