【Python】标准库高效运用指南
文章目录
Python 通过模块来体现“库”
- 降低了程序猿的学习成本
- 提高了程序的开发效率
库 就是是别人已经写好了的代码,可以让我们直接拿来用
荀子曰: “君子性非异也,善假于物也”
一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备
所谓的 “生态” 指的就是语言是否有足够丰富的库, 来应对各种各样的场景
实际开发中,也并非所有的代码都自己手写,而是要充分利用现成的库,简化开发过程
按照库的来源,可以大致分成两大类
Python
自带的库,只要安装了 Python
就可以直接使用标准库
Python
自身内置了非常丰富的库.,在 Python
官方文档上可以看到这些库的内容
https://docs.python.org/3.10/library/index.html
简单来说, 主要是这些部分:
print
,input
等)int
,str
,bool
,list
,dict
等类型内置的操作).日期计算
输入任意的两个日期,计算两个日期之间隔了多少天
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
”。
思路
- 针对上述字符串,使用空格进行切分。
split
方法,可以指定分隔符,把字符串分成多个部分,放到一个list
里面 - 针对方才的切分结果列表,进行逆序==>
reverse
- 将逆序后的列表,组合起来==>
join
def reverseWords(s: str):
tokens = s.split(' ')
tokens.reverse()
return ' '.join(tokens)
s: str
是声明 s
是一个字符串变量leetcode 796,旋转字符串
https://leetcode.cn/problems/rotate-string/
给定两个字符串,
s
和goal
。如果在若干次旋转操作之后,s
能变成goal
,那么返回true
。
s
的旋转操作就是将s
最左边的字符移动到最右边。
例如,若s = 'abcde'
,在旋转一次之后结果就是'bcdea'
思路
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
前缀的字符串数目。
一个字符串的 前缀 是出现在字符串开头的子字符串。子字符串是一个字符串中的连续一段字符序列
思路
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
每次调用,都能自动的去针对子目录进行递归的操作,只需要使用上述循环,就可以把所有的路径都获取出来作者:椰椰椰耶