Python技能手册 - 模块module

目录

内置排序

列表排序

元组排序

字符串排序(按长度)

字符串排序(按字典序)

类排序

 Lambda表达式排序

copy

浅拷贝 copy.copy

深拷贝 copy.deepcopy

heapq

创建(小顶)堆  heapq.heappush

获取前n个最小值 heapq.nsmallest()

列表转小顶堆 heapq.heapfy()

os

time

获取时间戳 time.time()

休眠 time.sleep()

获取当地时间 time.localtime([timestamp])

格式化 time.strftime(format[, t])

datetime

三种基本类型 data、time、datetime

date

初始化日期 date()

time

初始化时间 time()

datetime

时间转字符串 datetime.strftime()

字符串转日期 datetime.strptime()

math和cmath

random

pickle

shelve


Python模块就是包含Python代码的文件,模块名就是文件名(去掉.py后缀)。模块可以包含函数、类、变量等。模块可以提高代码的可维护性和重复使用,避免函数名和变量名冲突。

内置排序

列表排序

list.sort()    # 列表排序
list.reverse()    # 列表逆序

元组排序

sorted(tuple)    # 元组排序
reversed(tuple)    # 元组逆序

字符串排序(按长度)

words = ["apple", "banana", "cherry"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # ['apple', 'cherry', 'banana']

字符串排序(按字典序)

strings = ["apple", "banana", "cherry", "date"]
sorted_strings = sorted(strings)
print(sorted_strings)    # ['apple', 'banana', 'cherry', 'date']

类排序

class Person:def __init__(self, name, age):self.name = nameself.age = agedef __lt__(self, other):# 实现 less than方法,来实现排序return self.age < other.agepeople = [Person("Alice", 25), Person("Bob", 30), Person("Charlie", 20)]
sorted_people = sorted(people)
print([p.name for p in sorted_people])  # ['Charlie', 'Alice', 'Bob']

 Lambda表达式排序

# 对元组列表按照第一个元素升序排序   
my_list = [(2, 'b'), (3, 'c'), (1, 'a')]   
sorted_list = sorted(my_list, key=lambda x: x[0])   
print(sorted_list) # 输出 [(1, 'a'), (2, 'b'), (3, 'c')]

copy

浅拷贝 copy.copy

浅拷贝是指创建一个新对象,但是这个新对象中的元素是原对象的引用。新对象中的元素和原对象中的元素指向同一个内存地址。

import copylist1 = [1, 2, [3, 4]]
list2 = copy.copy(list1)print(list1)  # [1, 2, [3, 4]]
print(list2)  # [1, 2, [3, 4]]list1[2][0] = 5print(list1)  # [1, 2, [5, 4]]
print(list2)  # [1, 2, [5, 4]]    # 修改一个元素,另一个元素也会发生变化

深拷贝 copy.deepcopy

 在 Python 中,可以使用 copy 模块中的 deepcopy() 函数来实现二维数组的任意拷贝。deepcopy() 函数可以递归地复制对象中的所有元素,包括嵌套的对象。

import copy# 原始二维数组
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]# 使用 deepcopy() 函数进行拷贝
arr_copy = copy.deepcopy(arr)# 修改拷贝后的数组
arr_copy[0][0] = 0# 打印原始数组和拷贝后的数组
print("原始数组:", arr)
print("拷贝后的数组:", arr_copy)

heapq

heapq是一个Python内置模块,提供了对堆队列(heap queue)的基本支持。它可以对可迭代对象进行原地堆排序并返回一个排序后的列表。

创建(小顶)堆  heapq.heappush

import heapq
a = []   #创建一个空堆
heapq.heappush(a,18)
heapq.heappush(a,1)
heapq.heappush(a,20)
heapq.heappush(a,10)
heapq.heappush(a,5)
heapq.heappush(a,200)
print(a)    # [1, 5, 10, 18, 20, 200]

获取前n个最小值 heapq.nsmallest()

import heapqa = [1, 5, 0, 100]
n_small_list = heapq.nsmallest(3, a)    # [1, 5, 10]

列表转小顶堆 heapq.heapfy()

import heapqa = [1, 5, 200, 18, 10, 200]
heapq.heapify(a)
print(a)    # [1, 5, 200, 18, 10, 200]

os

time

time模块提供了一系列函数,用于获取当前时间、时间格式化、时间戳等操作。

获取时间戳 time.time()

返回当前时间的时间戳,以秒为单位,浮点数表示。

print(time.time())  # 1703581829.3947577

休眠 time.sleep()

使程序暂停指定的秒数。

time.sleep(1)    # 休眠1s

获取当地时间 time.localtime([timestamp])

将给定的时间戳转换为本地时间,返回一个包含年、月、日、时、分、秒等信息的time.struct_time对象。

import time# 获取指定时间的当地时间
print(time.localtime(time.time()))
# time.struct_time(tm_year=2023, tm_mon=12, tm_mday=26, tm_hour=17, tm_min=14, tm_sec=4, tm_wday=1, tm_yday=360, tm_isdst=0)# 查看返回结果的类型
print(type(time.localtime(time.time())))
# <class 'time.struct_time'># 获取当前时间的当地时间
print(time.localtime())
# time.struct_time(tm_year=2023, tm_mon=12, tm_mday=26, tm_hour=17, tm_min=14, tm_sec=4, tm_wday=1, tm_yday=360, tm_isdst=0)

格式化 time.strftime(format[, t])

将时间对象格式化为字符串。

import timet = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
t = time.mktime(t)
print(time.strftime("%b %d %Y %H:%M:%S", time.gmtime(t)))	# Feb 17 2009 09:03:38

datetime

三种基本类型 data、time、datetime

datetime模块提供了日期和时间数据类型,包括date、time和datetime。

  • datetime.date:表示日期,包括年、月、日。
  • datetime.time:表示时间,包括时、分、秒、纳秒。
  • datetime.datetime:表示日期和时间,包括年、月、日、时、分、秒、纳秒。

date

date表示日期(年、月、日)。

初始化日期 date()

from datetime import date# 创建一个日期对象
d = date(2023, 3, 15)
print(d)  # 输出:2023-03-15# 获取日期对象的信息
print(d.year)  # 输出:2023
print(d.month)  # 输出:3
print(d.day)  # 输出:15

time

time表示时间(时、分、秒、微秒)。

初始化时间 time()

from datetime import time# 创建一个时间对象
t = time(13, 45, 30)
print(t)  # 输出:13:45:30# 获取时间对象的信息
print(t.hour)  # 输出:13
print(t.minute)  # 输出:45
print(t.second)  # 输出:30

datetime

datetime表示日期和时间。

时间转字符串 datetime.strftime()

将日期时间格式化为字符串。

from datetime import datetimenow = datetime.now()month = now.strftime("%m")
print("month:", month)  # month: 12day = now.strftime("%d")
print("day:", day)  # day: 26time = now.strftime("%H:%M:%S")
print("time:", time)    # time: 17:20:51date_time = now.strftime("%Y-%m-%d, %H:%M:%S")
print("date and time:", date_time)  # date and time: 2023-12-26, 17:20:51

字符串转日期 datetime.strptime()

将字符串解析为日期时间。

from datetime import datetimedate_string = "21 June, 2018"print("date_string =", date_string)
print("type of date_string =", type(date_string))date_object = datetime.strptime(date_string, "%d %B, %Y")print("date_object =", date_object)
print("type of date_object =", type(date_object))
  • %d    Day of the month as a zero-padded decimal.    01, 02, ..., 31
  • %-d    Day of the month as a decimal number.    1, 2, ..., 30
  • %b    Abbreviated month name.    Jan, Feb, ..., Dec
  • %B    Full month name.    January, February, ...
  • %m    Month as a zero-padded decimal number.    01, 02, ..., 12
  • %-m    Month as a decimal number.    1, 2, ..., 12
  • %y    Year without century as a zero-padded decimal number.    00, 01, ..., 99
  • %-y    Year without century as a decimal number.    0, 1, ..., 99
  • %Y    Year with century as a decimal number.    2013, 2019 etc.
  • %H    Hour (24-hour clock) as a zero-padded decimal number.    00, 01, ..., 23
  • %-H    Hour (24-hour clock) as a decimal number.    0, 1, ..., 23

math和cmath

random

随机模块,用于生成随机数。

pickle

shelve

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

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

相关文章

Spring系列:基于Spring-Jdbc实现事务

文章目录 一、事务基本概念二、编程式事务三、声明式事务前期准备 四、基于注解的声明式事务Transactional注解标识的位置事务属性&#xff1a;只读事务属性&#xff1a;超时事务属性&#xff1a;回滚策略事务属性&#xff1a;隔离级别事务属性&#xff1a;传播行为测试 五、基…

大数据开发之Sqoop详细介绍

测试环境 CDH 6.3.1 Sqoop 1.4.7 一.Sqoop概述 Apache Sqoop&#xff08;SQL-to-Hadoop&#xff09;项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在 Sqoop 的帮助下&#xff0c;轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中&…

IRIS、Cache系统类汉化

文章目录 系统类汉化简介标签说明汉化系统包说明效果展示类分类%Library包下的类重点类非重点类弃用类数据类型类工具类 使用说明 系统类汉化 简介 帮助小伙伴更加容易理解后台系统程序方法使用&#xff0c;降低代码的难度。符合本土化中文环境的开发和维护&#xff0c;有助于…

年底大厂今年发多少年终奖,怎么发(上)?

马上就2023年年底了&#xff0c;互联网大厂腾讯员工首先&#xff0c;发年终奖了&#xff0c;111354 元&#xff01; 腾讯的同学可以查一查了&#xff0c;应该发多少已经定下来了&#xff01;&#x1f44b; 除此之外&#xff0c;千寻找了很多的大厂的年终奖发放时间&#xff0c;…

k8s搭建(一、环境配置与docker安装)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

SpringBoot3 整合Redis

1. 场景整合 依赖导入 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>配置 spring.data.redis.host192.168.200.100 spring.data.redis.passwordLfy…

Android Studio 如何隐藏默认标题栏

目录 前言 一、修改清单文件 二、修改代码 三、更多资源 前言 在 Android 应用中&#xff0c;通常会有一个默认的标题栏&#xff0c;用于显示应用的名称和一些操作按钮。但是&#xff0c;在某些情况下&#xff0c;我们可能需要隐藏默认的标题栏&#xff0c;例如自定义标题栏…

时序预测 | Matlab实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络时间序列预测

时序预测 | Matlab实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络时间序列预测 目录 时序预测 | Matlab实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短…

electron + sqlite3 解决打包后无法写入数据库

前言 window环境。 electron28.0.0 sqlite35.1.6 使用 electron-builder 打包。 本文旨在解决打包后无法写入数据库的问题。 但如果你是打包后无法访问sqlite&#xff0c;且有报错弹窗&#xff0c;不妨也看看本文。 也许是同一种原因。 错误原因分析 打包后无法创建db文件&…

【HarmonyOS开发】探究Hap与App包的结构与区别

1、Hap与App包的区别 OpenHarmony 可以进行两种形式&#xff08;Hap和App&#xff09;的打包&#xff0c;HAP是用于本地调试的&#xff0c;APP包是用于上架发布的。 根据不同的设备类型&#xff0c;一个APP包可以包含多个HAP包。 下面从两个角度进行分析 1.1 编译构建角度 编…

uniapp中uview的text组件

基本使用&#xff1a; 通过text参数设置文本内容。推荐您使用:textvalue的形式 <u--text text"我用十年青春,赴你最后之约"></u--text>设置主题&#xff1a; 通过type参数设置文本主题&#xff0c;我们提供了五类属性。primary error success warning…

javafx写一个文档编辑器

文本编辑器是一种用于编辑纯文本文件的工具。它具有基本的文本编辑功能,如插入、删除、复制、粘贴等。文本编辑器通常不具备格式化文本、排版和图形编辑等高级功能,专注于纯文本的编辑。常见的文本编辑器包括记事本(Notepad)、Sublime Text、Visual Studio Code、Atom、Emacs…

【leetcode100-021】【矩阵】搜索二维矩阵 II

【题干】 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 【思路】 以右上角为起点斜着看这个矩阵&#xff0c;会发现&#xff0c;这是一颗二叉搜索树。 …

中间件系列 - Redis入门到实战(高级篇-分布式缓存)

前言 学习视频&#xff1a; 黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 本内容仅用于个人学习笔记&#xff0c;如有侵扰&#xff0c;联系删除 学习目标 Redis持久化Redis主从Redis哨兵Redis分片集群 一 分…

每日一题——LeetCode876.链表的中间结点

个人主页&#xff1a;白日依山璟 专栏&#xff1a;Java|数据结构与算法|每日一题 1.题目描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例1 输入&#xff1a;head [1,2,3,4,5] 输出&…

nginx-proxy-manager初次登录502 bad gateway

nginx-proxy-manager初次登录502 bad gateway 按照官方docker-compose安装后,页面如下: 默认账户密码: adminexample.com/changeme点击sign in,提示Bad Gateway 打开调试 重装后依然如此,最后查阅githup issue 找到答案 https://github.com/NginxProxyManager/nginx-proxy-…

【教学类-43-01】20231226 九宫格数独1.0

作品展示——九宫格数独&#xff08;正方形手工纸&#xff09; 背景需求&#xff1a; 最近陆续出了“X-Y比大小”“X-Y加法判断题”&#xff0c;发现1/3大4班孩子都能完成&#xff0c;3-4位孩子表示“太简单”。 大4班20号同学&#xff0c;做完0-10的判断题后说&#xff1a;“…

OpenHarmony开发者自测试框架初学指南

OH开发者自测试框架初学指南 前言前置环境搭建wsl2安装wsl2迁移源码下载编译环境 测试框架应用环境搭建libreadline-dev安装python库安装nfs-kernel-server验证 windows环境准备vscodeusbipd 生成测试用例更改BUILD.gn的配置项关于fuzz配置编写fuzz用例编译fuzz用例执行 后记 前…

redis在linux集群部署

1.下载redis wget http://download.redis.io/releases/redis-3.2.9.tar.gz 2.解压redis tar -zxvf redis-3.2.9.tar.gz 3.安装redis 在解压redis目录下 make install /usr/soft/redis/ 4.启动redis 在redis的bin目录 执行 ./redis.conf 5.设置redis 端口 密码 集群 vim redis.c…

mongodb聚合_删除_可视化工具

3.5 MongoDB中limit和skip MongoDB Limit() 方法 如果你需要在MongoDB中读取指定数量的数据记录&#xff0c;可以使用MongoDB的Limit方法&#xff0c;limit()方法接受一个数字参数&#xff0c;该参数指定从MongoDB中读取的记录条数。limit()方法基本语法如下所示&#xff1a;…