目录
获取当地时间?time.localtime([timestamp])
格式化 time.strftime(format[, t])
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']
# 对元组列表按照第一个元素升序排序
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')]
浅拷贝是指创建一个新对象,但是这个新对象中的元素是原对象的引用。新对象中的元素和原对象中的元素指向同一个内存地址。
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]] # 修改一个元素,另一个元素也会发生变化
?在 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是一个Python内置模块,提供了对堆队列(heap queue)的基本支持。它可以对可迭代对象进行原地堆排序并返回一个排序后的列表。
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]
import heapq
a = [1, 5, 0, 100]
n_small_list = heapq.nsmallest(3, a) # [1, 5, 10]
import heapq
a = [1, 5, 200, 18, 10, 200]
heapq.heapify(a)
print(a) # [1, 5, 200, 18, 10, 200]
time模块提供了一系列函数,用于获取当前时间、时间格式化、时间戳等操作。
返回当前时间的时间戳,以秒为单位,浮点数表示。
print(time.time()) # 1703581829.3947577
使程序暂停指定的秒数。
time.sleep(1) # 休眠1s
将给定的时间戳转换为本地时间,返回一个包含年、月、日、时、分、秒等信息的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)
将时间对象格式化为字符串。
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模块提供了日期和时间数据类型,包括date、time和datetime。
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表示时间(时、分、秒、微秒)。
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表示日期和时间。
将日期时间格式化为字符串。
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
将字符串解析为日期时间。
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
随机模块,用于生成随机数。