【Python】标准库的使用

news2024/9/23 7:23:00

文章目录

  • 标准库
  • 日期计算
  • 字符串操作
    • 剑指offer 58,翻转单词顺序
      • 思路
    • leetcode 796,旋转字符串
      • 思路
    • leetcode 2255,统计是给定字符串前缀的字符串数目
      • 思路
  • 文件查找工具

Python 通过模块来体现“库”

  1. 降低了程序猿的学习成本
  2. 提高了程序的开发效率

就是是别人已经写好了的代码,可以让我们直接拿来用

荀子曰: “君子性非异也,善假于物也”

一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备

所谓的 “生态” 指的就是语言是否有足够丰富的库, 来应对各种各样的场景

实际开发中,也并非所有的代码都自己手写,而是要充分利用现成的库,简化开发过程

按照库的来源,可以大致分成两大类

  • 标准库:Python 自带的库,只要安装了 Python 就可以直接使用
  • 第三方库:其他人实现的库,要想使用,需要额外安装,种类非常庞大

标准库

Python 自身内置了非常丰富的库.,在 Python 官方文档上可以看到这些库的内容
https://docs.python.org/3.10/library/index.html

简单来说, 主要是这些部分:

  • 内置函数 (如 printinput 等)
  • 内置类型 (针对 intstrboollistdict 等类型内置的操作).
  • 文本处理
  • 时间日期
  • 数学计算
  • 文件目录
  • 数据存储 (操作数据库,数据序列化等).
  • 加密解密
  • 操作系统相关
  • 并发编程相关 (多进程, 多线程, 协程, 异步等).
  • 网络编程相关
  • 多媒体相关 (音频处理, 视频处理等)
  • 图形化界面相关

日期计算

输入任意的两个日期,计算两个日期之间隔了多少天

  • 使用 import 语句导入标准库的 datetime 模块
  • 使用 datetime.datetime 构造两个日期,参数使用年,月,日这样的格式
  • 两个日期对象相减,即可得到日期的差值
import datetime  
  
date1 = datetime.datetime(2004,2,23)  
date2 = datetime.datetime(2024,9,1)  
print(date2 - date1)

"""
运行结果
7496 days, 0:00:00
"""

或者这样行写

from datetime import datetime  
  
date1 = datetime(2004,2,23)  
date2 = datetime(2024,9,1)  
print(date2 - date1)

"""
运行结果
7496 days, 0:00:00
"""

或者这样写,将模块名重命名一下

import datetime as dt  
  
date1 = dt.datetime(2004,2,23)  
date2 = dt.datetime(2024,9,1)  
print(date2 - date1)

关于 datetime 的更多操作,可以参考官方文档
https://docs.python.org/3/library/datetime.html

字符串操作

字符串是 Python 的内置类型,字符串的很多方法不需要导入额外的模块,即可直接使用

剑指offer 58,翻转单词顺序

https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/description/

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。image.png

思路

  1. 针对上述字符串,使用空格进行切分。split 方法,可以指定分隔符,把字符串分成多个部分,放到一个 list 里面
  2. 针对方才的切分结果列表,进行逆序==> reverse
  3. 将逆序后的列表,组合起来==> join
def reverseWords(s: str):  
    tokens = s.split(' ')  
    tokens.reverse()  
    return ' '.join(tokens)
  • s: str 是声明 s 是一个字符串变量

leetcode 796,旋转字符串

https://leetcode.cn/problems/rotate-string/

给定两个字符串,sgoal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true
s 的旋转操作就是将 s 最左边的字符移动到最右边。
例如,若 s = 'abcde',在旋转一次之后结果就是 'bcdea'image.png

思路

  • 使用 len 求字符串的长度,如果长度不相同,则一定不能旋转得到
  • s 和自己进行拼接,然后直接使用 in 方法来判定 goal 是否是 s + s 的子串.
def rotateSstring(s, goal):  
    if len(s) != len(goal):  
        return False  
    return goal in (s+s)

leetcode 2255,统计是给定字符串前缀的字符串数目

https://leetcode.cn/problems/count-prefixes-of-a-given-string/

给你一个字符串数组 words 和一个字符串 s ,其中 words[i]s 只包含小写英文字母。
请你返回 words 中是字符串 s 前缀的字符串数目。
一个字符串的 前缀 是出现在字符串开头的子字符串。子字符串是一个字符串中的连续一段字符序列image.png|486

思路

  • 遍历 words,取出每个字符串
  • 判定当前这个字符串是否是 s 的前缀(s 是否是以这个字符串开头的)==>startwith
def countPrefixes(words: list, s: str):  
    count = 0  
    for word in words:  
        if s.startswith(word):  
            count += 1  
    return count

关于字符串的更多操作, 参考官方文档
https://docs.python.org/3/library/stdtypes.html#str

文件查找工具

  • 搜索的关键就是对目录结构进行遍历
    • 递归查找,遇到子目录,就进到目录里面进行查找
import os  
  
inputPath = input('请输入待搜索路径: ')  
pattern = input('请输入待搜索关键词: ')  
  
for dirpath, dirnames, filenames in os.walk(inputPath):  
    for f in filenames:  
        if pattern in f:  
            print(f'{dirpath}/{f}')
  • os.walk 是一个遍历操作系统目录非常好用的一个办法
    • 只需要使用简单的循环就能完成递归遍历目录的操作,不必手写递归代码
    • os 传入的参数就是要从哪个目录开始进行遍历
  • dirpath 表示遍历到当前位置,对应的路径是什么
  • dirnames 表示当前目录下都有哪些目录,是一个列表,可以包含多个目录
  • dirnames 表示当前目录下都有哪些文件名,是一个列表,可以包含多个文件名
  • os.walk 每次调用,都能自动的去针对子目录进行递归的操作,只需要使用上述循环,就可以把所有的路径都获取出来

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2097083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文带你玩转美国头条NewsBreak平台广告开户优势

一文带你玩转美国头条NewsBreak平台广告开户优势 一、NewsBreak是什么:美国资讯APP的璀璨新星 NewsBreak平台,一款在美国本土迅速崛起的资讯APP,以其1600万的日活跃用户和4000万的新闻订阅用户,成为众多出海企业关注的焦点。它不…

vue-virtual-scroller插件实现不等高表格虚拟滚动

对于大量的表格数据加载,如果我们全部加载不仅面临加载等待时间长,容易崩溃的问题,还有可能导致浏览器缓存数据量大而导致页面使用卡顿的情况。 所以我们使用虚拟滚动加载来优化这种情况,在这里我们使用插件vue-virtual-scroller来…

【Windows】windows powershell 如何实现tail -f xx.log 实时看日志的功能?

windows powershell 如何实现tail -f xx.log 实时看日志的功能? 在Windows PowerShell中,要实现类似于Linux中的tail -f xx.log实时查看日志文件的功能,可以使用Get-Content命令配合-Tail和-Wait参数。这将让你能够实时地查看日志文件的变化。…

前端面试资料集合

整理了前端面试相关资料,包含课程(5们)、面试题(道)、面试书籍(本),希望对加大有用,欢迎收藏。 面试课程: 1、前端开发技术面试指南及真题讲解带你入坑BAT 这门课程主要针对想要进入BAT(百度、阿里巴巴、腾讯&#…

(11)电调和电机

文章目录 前言 1 电机 2 无刷电机ESC 2.1 协议 2.2 使用BLHeli32或BLHeli-S配置固件的ESC 2.3 遥测 3 ESC接线和大型QuadPlane ESC问题 前言 ArduPilot 支持各种 ESC、电机和电子燃油系统。以下页面提供了最流行类型的设置说明。 ArduPilot 支持各种 ESC、电机和电子燃…

[oeasy]python0032_ 火星文字幕_os_操作系统的作用_time_sleep_延迟

火星文字幕_os_操作系统的作用_time_sleep_延迟 🥋 回忆上次内容 这次我们了解了unix系统 在multics项目失败后汤普森和里奇 为了 玩游戏自制了 unix 这个世界从此有了 操作系统operating systemos 这个os有什么用吗?🤔 回忆shell执行…

Qt技巧(二)-滑动界面,轮询控件,循环操作控件

在Qt界面开发过程中,我们常常要对同类部件,具有同样功能的一系列部件进行操作,比如: 这个页面该怎么设计,中间的几个选项该怎么操作? 我们在主工程中添加一个设计师界面类,类名设置为“BrandF…

【pytorch】torch、torchaudio、torchvision版本对应关系

在官网查询版本对应关系 https://pytorch.org/get-started/previous-versions/

【论文阅读】语义通信安全研究综述(2024)

摘要 语义通信系统架构 笔记 内容概述 引言:介绍了语义通信技术的背景、发展和重要性,以及它在无线通信系统中面临的安全挑战。 语义通信系统架构及安全攻击:描述了一个端到端的深度学习语义通信系统的基本架构,包括语义编解码…

会议记录|MAS Lab 年度组会记录

前言:本篇博客记录 20240831 MAS Lab 第一次大组会要点。 “预测未来最好的方式就是创造它” —— 面向对象之父 Alan Kay 张老师提及 The MIT Media Lab (中国多媒体大会上了解到的这个实验室),用技术带动产业发展、创造生态。 …

在工作中,这些问题,你是不是已经忍了很久?

在工作中,这些问题,你是不是已经忍了很久?每次找文件像在翻垃圾堆,办公室里纸山堆积得让人喘不过气。关键资料丢失让你夜不能寐,数据出错让你心烦意乱。面对这些反复出现的麻烦,你是否已经感到无比沮丧和焦…

Python 如何创建和使用进度条(tqdm模块)

在处理大规模数据、运行长时间任务或者需要跟踪任务进度的场景中,进度条(Progress Bar)是非常有用的工具。Python 的 tqdm 模块提供了一种简便的方法来创建和使用进度条,它的名称来源于阿拉伯语词汇“taqaddum”,意思是…

【方法分享】如何使用WinRAR将文件夹里的每个文件压缩

不知道大家是否会遇到这种情况,将文件夹内的多个文件或文件夹压缩成一个个压缩包文件,这种情况除了将文件夹中的文件一个个压缩,还有什么批量操作的方法呢?今天分享使用WinRAR批量压缩文件到每个单独的文件夹的方法。 方法如下&a…

问题-解决方案对-《分析模式》漫谈24

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的第一章有这么一句: It is an important form because it supports the definition of a pattern as "a solution to a problem in context,&…

constexpr关键字

1.const 在c11之前只有const关键字,主要有两个作用:变量只读,修饰常量。 2.constexpr 在c11中新添加了关键字constexpr(作用:用于修饰常量表达式) 常量表达式:由多个常量组成并在编译过程中就能得到计算结果的表达…

React16新手教程记录

文章目录 前言一些前端面试题1. 搭建项目1. 1 cdn1. 2 脚手架 2. 基础用法2.1 表达式和js语句区别:2.2 jsx2.3 循环map2.4 函数式组件2.5 类式组件2.6 类组件点击事件2.6.1 事件回调函数this指向2.6.2 this解决方案2.6.2.1 通过bind2.6.2.2 箭头函数(推荐…

MySQL数据库增删查改(基础)CRUD

CRUD 即增加 (Create) 、查询 (Retrieve) 、更新 (Update) 、删除 (Delete) 四个单词的首字母缩写。 1. 新增(Create) 1.1单行数据(全列插入) 比如说:创建一张学生表,有姓名,学号。插入两个学…

C++和OpenGL实现3D游戏编程【连载7】——文字和汉字的显示

1、本节实现的内容 上一节我们讨论了纹理在二维平面内不规则图形贴图的相关基础操作,本节我们开始了解游戏里文字以及汉字的显示方法。本节课我们将从基本的ASCII字符显示,拓展到中文字符的显示,最后再讲到纹理字符的显示,并对各种文字显示方法的优缺点和使用场景进行分析…

改进YOLO的群养猪行为识别算法研究及部署(小程序-网站平台-pyqt)

概述 群养猪的运动信息和行为信息与其健康状况息息相关,但人工巡视费时费力,本实验提出采用行为识别算法于群养猪的养殖管理中,识别群养猪drink(饮水)、stand(站立)和lie(躺卧&#…

[STM32]从零开始的STM32标准库环境搭建(小白向)

一、我们为什么要搭建STM32标准库开发环境 如果你对STM32有一定的了解,相信你已经认识了STM32的几种开发方式。基于STM32寄存器开发,基于ST官方的标准库开发,基于ST官方的HAL库开发。我们现在来了解一下这些库的优缺点。首先就是基于寄存器开…