Python技能手册 - 模块module

发布时间:2023年12月27日

目录

内置排序

列表排序

元组排序

字符串排序(按长度)

字符串排序(按字典序)

类排序

?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 = name
        self.age = age
    
    def __lt__(self, other):
        # 实现 less than方法,来实现排序
        return self.age < other.age

people = [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 copy

list1 = [1, 2, [3, 4]]
list2 = copy.copy(list1)

print(list1)  # [1, 2, [3, 4]]
print(list2)  # [1, 2, [3, 4]]

list1[2][0] = 5

print(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 heapq

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

列表转小顶堆?heapq.heapfy()

import heapq

a = [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 time

t = (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 datetime

now = datetime.now()

month = now.strftime("%m")
print("month:", month)  # month: 12

day = now.strftime("%d")
print("day:", day)  # day: 26

time = now.strftime("%H:%M:%S")
print("time:", time)    # time: 17:20:51

date_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 datetime

date_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

文章来源:https://blog.csdn.net/u012925450/article/details/135233714
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。