d16 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 subprocess模块...

2023-10-08 16:20

本文主要是介绍d16 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 subprocess模块...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

collections模块

在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。

nametype具名元组

具有名字的元组

坐标 :x为1 y为2 z为3

from collections import namedtuple
point = namedtuple('坐标',['x','y','z'])
#也可以下面格式
point1 = namedtuple('坐标','x, z, y')
# 第二个参数既可以为可迭代对象,也可以是字符串
# 字符串得用空格隔开
p = point(1,2,3)
# 注意元素的个数必须和nametype第二个参数的数量一致
print(p)
print(p.x)
print(p.y)
print(p.z)
View Code

扑克牌

from collections import namedtuplecard= namedtuple('扑克牌','color,number')
# card= namedtuple('扑克牌',['color,number'])
A = card('','A')
print(A)
print(A.color)
print(A.number)
View Code

城市天气

city  = namedtuple('中国','city,weather,temperature')
c = city('北京','','30')
print(c)
print(c.city)
print(c.weather)
print(c.temperature)
View Code

 

deque双端队列

双端队列俩端都可以进和出

queue队列

队列:先进先出,  FIFO(first in first out)
import queue
# 生成队列对象
q = queue.Queue()
# 往队列添加值
q.put('first')
q.put('second')
q.put('third')# 向队列取值,程序会在原地等待,直到从队列获得值
print(q.get())
print(q.get())
print(q.get())
View Code

deque双端队列

from collections import deque
q = deque(['a','b','c'])
# 添加值
q.append('1')
# 左添加值
q.appendleft('2')
print(q)
# 取值
print(q.pop())
#取左值
#特殊点   可以根据索引在任意位置插入值
q.insert(2,'哈哈')
q.insert(4,'嘿嘿')
View Code

队列不应该支持在任意位置插入值,只能在首尾插值

语法

插入
insert
添加
append
appendleft
取值
pop
popleft
View Code
OrderedDict有序字典

普通字典

normal_d = dict([('a',1),('b',2),('c',3)])
print(normal_d)
normal_d['q'] = 11
normal_d['w'] = 22
print(normal_d)
View Code

有序字典

from collections import OrderedDict
order_d = OrderedDict([('a',1),('b',2),('c',3)])
print(order_d)
order_d1 = OrderedDict()
order_d1['x'] = 11
order_d1['y'] = 22
order_d1['z'] = 33
print(order_d1)
for i in order_d1:print(i)
View Code

OrderedDict的Key会按照插入的顺序排列,不是Key本身排序

defaultdict 默认字典

一般写法

value = [11,22,33,44,55,66,77,88,99]将所有大于 66` `的值保存至字典的第一个'key'中,将小于 66` `的值保存至第二个'key'的值中。
values = [11, 22, 33,44,55,66,77,88,99,90]my_dict = {}for value in  values:if value>66:if my_dict.has_key('k1'):my_dict['k1'].append(value)else:my_dict['k1'] = [value]else:if my_dict.has_key('k2'):my_dict['k2'].append(value)else:my_dict['k2'] = [value]
View Code

使用模块

from collections import defaultdictvalues = [11, 22, 33,44,55,66,77,88,99,90]my_dict = defaultdict(list)  # 后续该字典中新建的key对应的value默认就是列表
print(my_dict['aaa'])
for value in  values:if value>66:my_dict['k1'].append(value)else:my_dict['k2'].append(value)
print(my_dict)my_dict1 = defaultdict(int)
print(my_dict1['xxx'])
print(my_dict1['yyy'])my_dict2 = defaultdict(bool)
print(my_dict2['kkk'])my_dict3 = defaultdict(tuple)
print(my_dict3['mmm'])
View Code

使用'dict'时,如果引用的'Key'不存在,就会抛出'KeyError'。如果希望'key'不存在时,返回一个默认值,就可以用'defaultdict'

>>> from collections import defaultdict
>>> dd = defaultdict(lambda: 'N/A')
>>> dd['key1'] = 'abc'
>>> dd['key1'] # key1存在
'abc'
>>> dd['key2'] # key2不存在,返回默认值
'N/A'
View Code
counter 计数

Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)

一般写法

s = 'asdfghjkhgfdsawssadfghjhhfgdsdsdag'
a = {}
for i in s:print(i)a[i] = 0
# 在就加1
print(a)
View Code

使用模块

from collections import Counter
s = 'asdfghjkhgfdsawssadfghjhhfgdsdsdag'
a = {}
res = Counter(s)
print(Counter)
print(res)
# 得到了v值
for q in res.values():print(q)
View Code

时间模块

表现时间的三种方式
1.时间戳(timestamp)
2.格式化时间(format string)
3.结构化时间(struct_time)
%y 两位数的年份表示(00-99%Y 四位数的年份表示(000-9999%m 月份(01-12%d 月内中的一天(0-31%H 24小时制小时数(0-23%I 12小时制小时数(01-12%M 分钟数(00=59%S 秒(00-59%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
time模块
import time
时间戳
time.time()
格式化时间
print(time.strftime('%Y-%m-%d'))
print(time.strftime('%Y-%m-%d %H:%M:%S'))
print(time.strftime('%Y-%m-%d %X'))  
# %X等价于%H:%M:%S
时间元组
localtime将一个时间戳转换为当前时区的struct_time
time.localtime()
View Code

时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的

转换时间

时间戳-->结构化时间
time.gmtime(时间戳)    
time.localtime(时间戳)>>>time.gmtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
>>>time.localtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
时间戳-->结构化时间
结构化时间-->时间戳 
time.mktime(结构化时间)
>>>time_tuple = time.localtime(1500000000)
>>>time.mktime(time_tuple)
1500000000.0
结构化时间-->时间戳
结构化时间-->字符串时间
time.strftime("格式定义","结构化时间")  结构化时间参数若不传,则显示当前时间
>>>time.strftime("%Y-%m-%d %X")
'2017-07-24 14:55:36'
>>>time.strftime("%Y-%m-%d",time.localtime(1500000000))
'2017-07-14'
结构化时间-->字符串时间
字符串时间-->结构化时间
time.strptime(时间字符串,字符串对应格式)
>>>time.strptime("2017-03-16","%Y-%m-%d")
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)
>>>time.strptime("07/24/2017","%m/%d/%Y")
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)
字符串时间-->结构化时间

结构化时间 --> %a %b %d %H:%M:%S %Y串
time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
>>>time.asctime(time.localtime(1500000000))
'Fri Jul 14 10:40:00 2017'
>>>time.asctime()
'Mon Jul 24 15:18:33 2017'时间戳 --> %a %b %d %H:%M:%S %Y串
time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
>>>time.ctime()
'Mon Jul 24 15:19:07 2017'
>>>time.ctime(1500000000)
'Fri Jul 14 10:40:00 2017' 
View Code
datetime模块
import datetime
print(datetime.date.today())  
# date>>>:年月日
print(datetime.datetime.today())  
# datetime>>>:年月日 时分秒
模块
import datetime
res = datetime.date.today()
res1 = datetime.datetime.today()
print(res.year)
print(res.month)
print(res.day)
print(res.weekday())  # 0-6表示星期  0表示周一
print(res.isoweekday())  # 1-7表示星期 7就是周日
语法
日期对象 = 日期对象 +/- timedelta对象
timedelta对象 = 日期对象 +/- 日期对象current_time = datetime.date.today()  # 日期对象
timetel_t = datetime.timedelta(days=7)  # timedelta对象
# +
res1 = current_time+timetel_t  # 日期对象
print(current_time)
print(timetel_t)
print(res1)
# -
print(current_time - timetel_t)
print(res1-current_time)
加减时间

小练习 计算今天距离今年过生日还有多少天

birth = datetime.datetime(2019,12,21,8,8,8)
current_time = datetime.datetime.today()
print(birth-current_time)
练习
# UTC时间
dt_today = datetime.datetime.today()
dt_now = datetime.datetime.now()
dt_utcnow = datetime.datetime.utcnow()
print(dt_utcnow,dt_now,dt_today)
UTC时间

random模块

import random
整数
random.randint(1,10)
# 随机取一个数字
random.randrange(1,10,2) 
# 大于等于1且小于10之间的奇数
小数
random.random()
# 随机取0-1的小数
random.uniform(1,3) 
#大于1小于3的小数
随机选择值返回
random.choice([1, 2, 3, 4, 5, 6,7])
# 随机从列表取值
random.sample([1,'2',[3,4]],9) # #列表元素任意2个组合
语法
res = [1, 2, 3, 4, 5, 6,7]
random.shuffle(res)
print(res)
打乱顺序,洗牌

随机验证码

大写字母 小写字母 数字5位数的随机验证码
chr
random.choice
封装成一个函数,用户想生成几位就生成几位
要求
def get_code(n):code = ''for i in range(n):# 先生成随机的大写字母 小写字母 数字upper_str = chr(random.randint(65,90))lower_str = chr(random.randint(97,122))random_int = str(random.randint(0,9))# 从上面三个中随机选择一个作为随机验证码的某一位code += random.choice([upper_str,lower_str,random_int])return code
res = get_code(4)
print(res)
代码

os模块

 os模块是与操作系统交互的一个接口

 

import os
listdir  会将当前文件夹的文件展示出来
os.mkdir   自动创建文件夹
os.path.exists   判断文件夹是否存在
os.path.isfile    只能判断文件是否存在,不能判断文件夹remove  删除文件
os.rmdir     删除单级目录,只能删除空文件夹
os.getcwd()  获取目录
os.chdir()  切换当前所在目录
os.path.getsize()    获取文件大小  大小单位为字节
常用语法

语法

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: ('.')
os.pardir  获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")  运行shell命令,直接显示
os.environ  获取系统环境变量
os.path.abspath(path)  返回path规范化的绝对路径
os.path.split(path)  将path分割成目录和文件名二元组返回
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小
综合

练习

选择文件查看

文件夹
火影人物鸣人.txt向日宁次.txt卡卡西.txt我爱罗.txt大蛇丸.txt波佐助.txt
import os
BASE_DIR = os.path.dirname(__file__)
MOVIE_DIR = os.path.join(BASE_DIR,'火影人物')
movie_list = os.listdir(MOVIE_DIR)
while True:for i,j in enumerate(movie_list,1):print(i,j)choice = input('你想看谁的啊(小姑娘/小伙子)>>>:').strip()if choice.isdigit():  # 判断用户输入的是否是纯数字choice = int(choice)  # 传成int类型if choice in range(1,len(movie_list)+1):  # 判断是否在列表元素个数范围内# 获取用户想要看的文件名target_file = movie_list[choice-1]# 拼接文件绝对路径target_path = os.path.join(MOVIE_DIR,target_file)with open(target_path,'r',encoding='utf-8') as f:print(f.read())else:print('所选不在名单中')else:print('输入数字哦')
代码

sys模块

sys模块是与python解释器交互的一个接口

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version        获取Python解释程序的版本信息
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
语法
mport sys
# sys.path.append()  # 将某个路径添加到系统的环境变量中
# print(sys.platform)
# print(sys.version)  # python解释器的版本print(sys.argv)  # 命令行启动文件 可以做身份的验证
if len(sys.argv) <= 1:print('请输入用户名和密码')
else:username = sys.argv[1]password = sys.argv[2]if username == 'jason' and password == '123':print('欢迎使用')# 当前这个py文件逻辑代码else:print('用户不存在 无法执行当前文件')
例子

序列化模块

序列化:序列:字符串序列化:其它数据类型转换成字符串的过程写入文件的数据必须是字符串
基于网络传输的数据必须是二进制序列化:其他数据类型转换成字符穿的过程
反序列化:字符串转换成其他数据类型

目的:

1、以某种存储形式使自定义[对象持久化](https://baike.baidu.com/item/%E5%AF%B9%E8%B1%A1%E6%8C%81%E4%B9%85%E5%8C%96);2、将对象从一个地方传递到另一个地方。3、使程序更具维护性。

  

json模块所有的语言都支持json格式支持的数据类型很少  字符串 列表 字典 整型 元组(转成列表)  布尔值pickle模块只支持pythonpython所有的数据类型都支持json,用于字符串 和 python数据类型间进行转换
pickle,用于python特有的类型 和 python的数据类型间进行转换
json模块
json.dumps()
序列化 将其他数据类型转换成json格式的字符串
json.dump()
dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
json.loads()
反序列化 将json格式的字符串转换成其他数据类型
json.load()
load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
注意,json转换完的字符串类型的字典中的字符串是由""表示的

 

d = {"name":"jason"}
print(d)
#序列化:将一个字典转换成一个字符串
res = json.dumps(d)  # json格式的字符串 必须是双引号 >>>: '{"name": "jason"}'
print(res,type(res))#反序列化:将一个字符串格式的字典转换成一个字典
res1 = json.loads(res)
print(res1,type(res1))
例子
d = {"name":"jason"}with open('userinfo','w',encoding='utf-8') as f:json.dump(d,f)  # 装字符串并自动写入文件
with open('userinfo','r',encoding='utf-8') as f:res = json.load(f)print(res,type(res))with open('userinfo','r',encoding='utf-8') as f:res1 = json.load(f)  # 不能够多次反序列化res2 = json.load(f)print(res1,type(res1))print(res2,type(res2))with open('userinfo','w',encoding='utf-8') as f:json_str = json.dumps(d)json_str1 = json.dumps(d)#换行写f.write('%s\n'%json_str)f.write('%s\n'%json_str1)#换行读
with open('userinfo','r',encoding='utf-8') as f:for line in f:res = json.loads(line)print(res,type(res))
t = (1,2,3,4)
print(json.dumps(t))# fp = 文件句柄(对象)
在源码中fp =文件句柄(对象) 
练习

ensure_ascii 是否转码

有中文时,使用
d1 = {'name':'熊大'}
print(json.dumps(d1,ensure_ascii=False))
View Code
pickle模块
dumps、dump(序列化,存)、
loads(反序列化,读)、load  (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化)

 

import pickle
d = {'name':'jason'}
res = pickle.dumps(d)  # 将对象直接转成二进制
print(pickle.dumps(d))
res1 = pickle.loads(res)
print(res1,type(res1))
例子
用pickle操作文件的时候 文件的打开模式必须是b模式 
with open('userinfo_1','wb') as f:pickle.dump(d,f)with open('userinfo_1','rb') as f:res = pickle.load(f)print(res,type(res))
例子

subprucess子进程

 

1.用户通过网络连接上了你的这台电脑
2.用户输入相应的命令 基于网络发送给了你这台电脑上某个程序
3.获取用户命令 里面subprocess执行该用户命令
4.将执行结果再基于网络发送给用户
这样就实现  用户远程操作你这台电脑的操作
实现
import subprocess执行系统指令
import os
# dir 列出所有进程
os.system('dir')# 打开进程
# shell 命令解释器
# stdout  标准输出
# 指定输出管道
stdout=subprocess.PIPEa=subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE)# 从管道中读取出执行结果
#[1] 输出
a1=subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE )
print(a1.stdout.read().decode('GBK'))# [2] 输入
a1=subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE,stdin= subprocess.PIPE)# PIPE 大写的单词为常量
# PIPE = -1
# STDOUT = -2
# DEVNULL = -3
# [3] 错误输出
print(a1.stderr .read().decode('utf-8'))
# tasklist | findstr python
#  先执行tasklist 把结果交给 findstr 来处理

把p1的输出传给p2,
p1 = subprocess.Popen("tasklist",shell=True,stdout=subprocess.PIPE)p2 = subprocess.Popen('findstr QQ',shell=True,stdin=p1.stdout,stdout=subprocess.PIPE,stderr= subprocess.PIPE )print(p2.stdout.read())
print(p2.stderr.read())
# 参数1 指令
# p = subprocess.Popen("你的指令或是某个exe",shell=True,stderr=,stdin=,stdout=)# 2 是否是一个指令
# 3 错误输出管道
# 4 输入管道
# 5 输出管道
# # 取出管道中的数据
# p.stderr.read()
# p.stdout.read()
# p.stdin.write(p.stdout.read())#
#  将输入写入管道 交给对方进程
语法

 

转载于:https://www.cnblogs.com/komorebi/p/11210204.html

这篇关于d16 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 subprocess模块...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/166507

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划