python——模块 迭代器 正则
一、python模块
先创建一个 .py 文件,这个文件就称之为 一个模块 Module。
使用模块的优点:
模块化编程,多文件编程
1.2 模块的使用
1.2.1 import语句
想要B.py文件中,使用A.py文件,只需要在B.py文件中使用关键字import导入即可。
import A
# 若A是一个包的话,可以这样写
import A.函数名
1.2.2 from ···import···语句
在python中,导入一个模块/文件通常使用关键字import,若是只想导入一个模块某个属性或方法,我们可以使用 from ... import ...语句。
语法格式
from 模块名/包名 import 属性名, 函数名
1.3 Python中的包
随着模块数目的增多,把所有模块不加区分地放到一起就显得非常不合理了,于是Python为我们提供了一种把模块组织到一起的方法,即创建一个包。
因为包是模块,所以包的使用和普通模块的使用方式是一样的。
1.3.1 什么是包
模块 就是 一个 .py 文件
包 就是一个包含 __init__.py文件的 文件夹,文件夹中可以包含子包或者模块。
创建包的目的不是为了运行,而是为了被导入使用,包的本质就是模块,因此可以将包当做模块来导入。
包是不能像普通模块那样被执行代码,所以包提供了一个__init__.py文件,导入包就会执行__init__.py文件,这也是__init__.py文件存在的意义。
1.3.2 如何使用包
1.3.3 导入自定义包
导入自定义的包,必须确保包在Python的搜索路径中 ,Python在导入包时会查找特定的目录列表,这个列表通常包括:
- 当前脚本所在的目录。
- 环境变量PYTHONPATH中指定的目录。
- Python安装目录中的库目录,如Lib/site-packages。
为了确保你的自定义包可以被导入,你需要确保它的目录在上述列表中的一个。最常见的方法是将你的包放在当前脚本所在的目录或一个子目录中,或者将包的目录添加到PYTHONPATH环境变量中。
1.4 Python常用标准库
Python 标准库非常庞大,所提供的模块涉及范围十分广泛,使用标准库我们可以让您轻松地完成各种任务。
下面是一些Python3中常用的标准库。
模块名称 | 模块描述 |
os | os 模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。 |
sys | sys 模块提供了与 Python 解释器和系统相关的功能,例如解释器的版本和路径,以及与 stdin、stdout 和 stderr 相关的信息。 |
time | time 模块提供了处理时间的函数,例如获取当前时间、格式化日期和时间、计时等。 |
datetime | datetime 模块提供了更高级的日期和时间处理函数,例如处理时区、计算时间差、计算日期差等。 |
math | math 模块提供了数学函数,例如三角函数、对数函数、指数函数、常数等。 |
json | json 模块提供了 JSON 编码和解码函数,可以将 Python 对象转换为 JSON 格式,并从 JSON 格式中解析出 Python 对象。 |
numpy | 一个用于维度数组计算的库 |
opencv | 一个用于计算机视觉的库 |
matplotlib | 一个用于数据可视化的库(绘图) |
scikit-learn | 一个用于机器学习的库 |
tensorflow | 一个用于深度学习的库 |
threading | 一个用于设置多线程的库 |
二、迭代器与生成器
2.1 迭代器
迭代是python访问集合中元素的一种方式,迭代器是一个可以记住遍历的位置的对象。
举例:
使用map()函数,将一个函数作用于一个序列中的所有元素,并返回一个迭代器——对迭代器可以再次转换成list tuple set等等等
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不能后退。
迭代器有两个基本的方法:iter() 和 next()。
StopIteration
StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在__next__()方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代
创建一个迭代器
把一个类作为一个迭代器使用需要在类中实现两个方法 iter() 与 next() 。
- iter() 方法返回一个特殊的迭代器对象,这个迭代器对象实现了 next() 方法并通过 StopIteration 异常标识迭代的完成。
- next() 方法会返回下一个迭代器对象。
# 创建一个返回数字的迭代器,起始值为10,逐步递增10
# 也就是说起始值是10,步长值为10
class num:def __iter__(self):self.a = 0return selfdef __next__(self):if self.a <=100:x = self.aself.a += 10return xelse:raise StopIteration#实例化对象
ls = num()
iter1 = iter(ls)
try:while True:print(next(iter1),end=' ')
except StopIteration:print('迭代完成')
#0 10 20 30 40 50 60 70 80 90 100 迭代完成
练习:# 实现一个自定义迭代器类MyRange,其功能类似于内置的range()函数,
# 但要求支持步长参数,并且只能从0开始迭代
class myiter:def __init__(self,end,spet):self.start = 0self.end = endself.spet = spetdef __iter__(self):return selfdef __next__(self):if self.start<self.end:x = self.startself.start+=self.spetreturn xelse:raise StopIterationresult = myiter(5,2)
iter1 = iter(result)
try:while True:print(next(iter1))
except StopIteration:print('迭代结束')
"""
0
2
4
迭代结束
"""
2.2 生成器
在python中,使用了 yield 的函数就被称为——生成器。
yield 是一个关键字,用于定义生成器函数,生成器函数是一种特殊的函数,可以在迭代过程中逐步产生值,而不是一次性返回所有结果。
与普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单的理解【生成器就是一个迭代器】。
每次使用yield语句生产一个值之后,函数都将暂停执行【内存释放出来】,等待再次唤醒。
yield语句和return语句的差别就在于yield语句返回的是可迭代对象,而return返回的是不可迭代对象。
每次调用生成器的next()方法或者使用for或while循环进行迭代时,函数会从上次暂停的地方继续执行,直到再次遇见yield语句。
def create(n):while n>0:yield nn-=1create_iter = create(5)
print(next(create_iter))#5
print(next(create_iter))#4
print(next(create_iter))#3
print(next(create_iter))#2
print(next(create_iter))#1
# print(next(create_iter))会报错StopIteration# for i in create_iter:
# print(i,end=' ')
生成器的优势是它们是按需生成值,避免一次性生成大量数据并占用大量内存,此外生成器还可以与其他迭代工具(如for循环)无缝衔接配合使用,提供了更加简洁和高效的迭代方式
练习:
使用生成器实现一个函数fibonacci(n),该函数返回一个生成斐波那契数列的生成器,
其中n表示生成斐波那契数列的元素个数。
def fun(n):a,b = 1,1while n:yield aa,b = b,a+bn-=1
n = fun(5)
try:while True:print(next(n))
except Exception as f:print(f)
三、正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re模块使 Python 语言拥有全部的正则表达式功能。
一个正则表达式的匹配工具:regex101: build, test, and debug regex
s = "C:\\a\\b\\c"
print(s)#C:\a\b\c# 正则表达式中遇见 \ 为转义字符,自动转义
# 若在前面加 r 说明是原生字符串,不转义s1 = r"C:\\a\\b\\c"
print(s1) #C:\\a\\b\\c
3.1 re.match函数
re.match 是从字符串的起始位置匹配一个模式,匹配不成功就返回None。
语法:re.match(pattern, string, flags=0)
参数:
pattern 需要匹配的正则表达式
string 匹配的字符串
flags 标志位,用于控制正则表达式的匹配方式, 如:是否区分大小写,多行匹配等
若匹配到了数据,就可以使用group(num) 或 groups() 来提取数据了。
group(num=0) 匹配整个字符串,可以设置参数
groups() 返回一个元组,包含所有小组字符串的元组
import re
s = 'hello and world'
ret = re.match('hello',s)
print(ret.group())#helloret2 = re.match('and',s)
print(ret2.group())#error
3.2 re.search函数
re.search 扫描整个字符串并返回第一个成功匹配的字符串。
import re
s = 'and hello and and world'
ret = re.search('and',s)
print(ret.group())#and返回第一个能匹配的
3.3 re.findall函数
re.findall 匹配整个字符串,返回string中所有与pattern相匹配的全部子串,返回形式为数组
import re
s = 'and hello and and world'
ret = re.findall('and',s)
print(ret)#['and', 'and', 'and']
3.4 matchr、search、findall的区别
- re.match 从首字母匹配,如果字符串开始不符合正则表达式,则匹配失败,函数返回 None。
- re.search 匹配整个字符串,直到找到一个对应匹配【若有多个,也只返回第一个】。
- re.findall 返回匹配到的所有子串。
3.5 正则表达式修饰符 - 可选标志
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。如 re.I | re.M 被设置成 I 和 M 标志:
修饰符 | 描述 |
re.I | 使匹配对大小写不敏感。 |
re.L | 做本地化识别(locale-aware)匹配。 |
re.M | 多行匹配,影响 ^ 和 $。 |
re.S | 使 . 匹配包括换行在内的所有字符。 |
re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B。 |
re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
import re
s = 'and hello and And world'
ret = re.findall('and',s,re.I)
print(ret)#['and', 'and', 'And']ret2 = re.findall('and',s)
print(ret2)#['and', 'and']
3.6 正则表达式模式
模式字符串使用特殊的语法来表示一个正则表达式。
- 字母和数字表示他们自身。
- 一个正则表达式模式中的字母和数字匹配同样的字符串。
- 多数字母和数字前加一个反斜杠时会拥有不同的含义。
- 标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。
- 反斜杠本身需要使用反斜杠转义。
由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。
import re
s = '__ 888 hqyj 666 &&&&&'ret1 = re.findall('.', s)
ret2 = re.findall('[h6]', s)
ret3 = re.findall(r'\d', s)
ret4 = re.findall(r'\D', s)
ret5 = re.findall(r'\w', s)
ret6 = re.findall(r'\W', s)print(ret1)#['_', '_', ' ', '8', '8', '8', ' ', 'h', 'q', 'y', 'j', ' ', '6', '6', '6', ' ', '&', '&', '&', '&', '&']
print(ret2)#['h', '6', '6', '6']
print(ret3)#['8', '8', '8', '6', '6', '6']
print(ret4)#['_', '_', ' ', ' ', 'h', 'q', 'y', 'j', ' ', ' ', '&', '&', '&', '&', '&']
print(ret5)#['_', '_', '8', '8', '8', 'h', 'q', 'y', 'j', '6', '6', '6']
print(ret6)#[' ', ' ', ' ', ' ', '&', '&', '&', '&', '&']
#匹配出一个字符串第一个字母为大写字符
#后面都是小写字母并且这些小写字母可有可无
import re
def fun1(n):ret = re.match('[A-Z]+[a-z]*', n)if ret:print(ret.group())else:print('匹配不成功')
n = input(">>")
fun1(n)#匹配变量名是否有效
def fun2(m):ret2 = re.match(r'[A-Za-z_]+\w*',m)if ret2:print(ret2.group())else:print("input error")
m = input(">>")
fun2(m)# 匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线
def fun3(b):ret3 = re.match(r'\w{8,20}',b)if ret3:print(ret3.group())else:print("input error")
b = input(">>")
fun3(b)
import re
#匹配163.com的邮箱地址
# 以^确定开头
# 通过$来确定末尾
myemail = 'hqyj_sunwy@163.com'
ret = re.match(r'^\w{4,20}@163\.com$', myemail)
print(ret.group())
import re#匹配出163、126、qq邮箱
myemail = '2042856895@qq.com'
ret = re.match(r'^\w{4,20}@(163|126|qq)\.com$', myemail)
print(ret.group())#匹配出<html><h1>www.bawei.com</h1></html>
ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>", "<html><h1>www.hqyj.com</h1></html>")
print(ret.group())#匹配出<html><h1>www.bawei.com</h1></html>
ret = re.match(r"<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>", "<html><h1>www.hqyj.com</h1></html>")
print(ret.group())
注意贪婪和非贪婪
贪婪是尝试匹配尽可能多的字符。
非贪婪是尝试匹配尽可能少的字符。
解决方式:非贪婪操作符”?”,用在"*","+","?"的后面,要求正则匹配的越少越好。
import re
s = 'abbcdef123456'
ret = re.match(r'\w+', s)
print(ret.group())
# 输出结果:abbcdef123456
ret = re.match(r'\w+?', s)
print(ret.group())
# 输出结果:a
练习
注册用户:
1、输入邮箱,邮箱验证: 6-16位非特殊字符的163邮箱。
2、输入手机号,进行手机号验证。11位数字,第一位是1,第二位是2到9,其余0到9
3、输入用户名,不少于非特殊4位字符。
4、输入昵称,不少于2个字符。
5、输入密码,必须包含字母、数字,特殊符号。
输入正确则提示注册成功,不正确则重新输入。
import re
def user():d = {}count1 = 0while True:a = input("输入邮箱>>")t1 =re.match(r'\w{6,16}@163\.com$',a)if t1.group():d['邮箱'] = t1.group()count1+=1breakelse:print("输入错误请重新输入")while True:b = input("输入电话号码>>")t2 = re.match(r'[1]+[3-9]+\d{9}', b)if t2.group():d['电话号码'] = t2.group()count1 += 1breakelse:print("input error")while True:c = input("用户名>>")t3 = re.match(r'\w{4,}',c)if t3.group():d['用户名'] = t3.group()count1 += 1breakelse:print("input error")while True:f = input("昵称>>")t4 = re.match('..',f)if t4.group():d['昵称'] = t4.group()count1 += 1breakelse:print("input error")while True:e = input("密码>>")t5 = re.match(r'.{6}',e)if t5.group():d['密码'] = t5.group()count1 += 1breakelse:print("input error")if count1 == 5:return dprint(user())
3.8 re.split函数
功能是分割
import re
s = 'user:zhangsan pwd:888666'
ret = re.split(r':| ', s)
print(ret)
3.9 re.sub函数
功能是替换
import re
s = 'i am zhangsan, i am 18 year, i like eat'
ret = re.sub(r"i", "I", s)
print(ret)
相关文章:
python——模块 迭代器 正则
一、python模块 先创建一个 .py 文件,这个文件就称之为 一个模块 Module。 使用模块的优点: 模块化编程,多文件编程 1.2 模块的使用 1.2.1 import语句 想要B.py文件中,使用A.py文件,只需要在B.py文件中使用关键字…...
QT仿QQ聊天项目,第三节,实现聊天界面
一,界面控件示意图 界面主要由按钮QPushButton,标签QLabel,列表QListWidget 要注意的是QListWidget既是实现好友列表的控件,也是实现聊天气泡的控件 二,控件样式 QPushButton#btn_name {border:none;}QPushButton#btn_close {border:1px;bac…...
Linux-何为CentOS
今年公司做的 POC 项目中,越来越多地听到客户开始或已经将系统迁移到麒麟、统信、openEuler,但还是有很多客户在用CentOS 7,或者和CentOS 7兼容的其他Linux。今天把CentOS 7相关概念统一整理下供后续参考使用 何为CentOS CentOS — Communit…...
C++中的 std::optional
std::optional<T>是 C17 中的一个标准库组件,optional <T>对象默认是空的,也就是处于无效状态,给它赋值后因为里面有了元素,就变成了有效状态。 1.引入背景 c函数常用返回值表示函数是否执行成功。如返回nullptr表示…...
猫狗识别之BUG汇总
一、github登不上去问题 下载watt toolkit 下载地址:https://steampp.net/ 可以下载后加速,访问github 二、猫狗总体参考核心 B哥的博客 https://github.com/bubbliiiing/classification-keras?tabreadme-ov-file 三、CSDN很多会员才能阅读问题 根据…...
【论文复现】自动化细胞核分割与特征分析
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀自动化细胞核分割与特征分析 引言1. 效果展示2. HoverNet概述3. HoverNet原理分析整体网络框架实例分割原理 4. HoverNet评估结果5. 复现过程…...
排序算法 -快速排序
文章目录 1. 快速排序(Quick Sort)1.1、 简介1.2、 快速排序的步骤 2. Hoare 版本2.1、 基本思路1. 分区(Partition)2. 基准选择(Pivot Selection)3. 递归排序(Recursive Sorting) 2…...
K8S 查看pod节点的磁盘和内存使用情况
查看某个节点的磁盘使用率: kubectl exec -it pod名称 -n 命名空间 – df -h 查询所有节点的已使用内存: kubectl top pods --all-namespaces | grep itsm 查询某个节点的总内存, kubectl describe pod itsr-domain-59f4ff5854-hzb68 --nam…...
华为HCIP——MSTP/RSTP与STP的兼容性
一、MSTP/RSTP与STP的兼容性的原理: 1.BPDU版本号识别:运行MSTP/RSTP协议的交换机会根据收到的BPDU(Bridge Protocol Data Unit,桥协议数据单元)版本号信息自动判断与之相连的交换机的运行模式。如果收到的是STP BPDU…...
AI 大模型如何重塑软件开发流程:现状与未来展望
随着人工智能技术的飞速发展,AI 大模型的出现正在深刻改变软件开发行业的传统模式。从代码生成到智能测试,AI 已渗透到软件开发的各个环节,为开发者提供了前所未有的效率提升,同时也带来了全新的挑战与思考。在本文中,…...
3步实现贪吃蛇
方法很简单,打开页面,复制,粘贴 一.整体思维架构 我们根据游戏的开始,运行,结束,将整个游戏划分成三个部分。在每个部分下面又划分出多个功能,接下来我们就根据模块一一实现功能。 二.Gamesta…...
华东师范大学数学分析第五版PDF习题答案上册及下册
“数学分析”是数学专业最重要的一门基础课程,也是报考数学类专业硕士研究生的专业考试科目。为了帮助、指导广大读者学好这门课程,编者编写了与华东师范大学数学科学学院主编的《数学分析》(第五版)配套的辅导用书,以帮助读者加深对基本概念…...
MySQL之联合查询
前文我们了解到了数据库设计的范式要求,故生活中很多相互关联的数据被拆分开来,但彼此之间通过某种条件链接,此文联合查询就是通过多表之间的连接关系,来查询我们想要的数据,即 《联合查询》 1. 联合查询简介 1.1 为什…...
[C/C++] 定位新表达式 placement new
在C中,表达式 new (ptr) T(); 展示了一种特殊的内存分配和对象构造方式,这被称为定位新表达式(placement new)。 通常,当我们使用 new 关键字时,它会在堆上动态分配内存,并调用相应的构造函数来…...
【MySQL】MySQL的笛卡尔积现象是什么?简单说说
笛卡尔积好像是个科学家,也是个学术概念,在MySQL中表示交叉连接,即:匹配一切所有的可能 举例如下: 准备两张表 【employee表】 emp_idlast_namedept_id1Smith12Johnson2 【department表】 dept_iddepartment_nam…...
《InsCode AI IDE:编程新时代的引领者》
《InsCode AI IDE:编程新时代的引领者》 一、InsCode AI IDE 的诞生与亮相二、独特功能与优势(一)智能编程体验(二)多语言支持与功能迭代 三、实际应用与案例(一)游戏开发案例(二&am…...
微搭低代码私有化部署搭建教程
目录 1 下载远程工具2 查看服务器配置3 下载部署包4 安装部署包5 系统登录总结 最近微搭推出了私有化部署版本,正好官方赠送了我一台云服务器,练习一下部署的过程,本篇作为一个实践的记录 1 下载远程工具 一般我们使用的是云服务器ÿ…...
【在Linux世界中追寻伟大的One Piece】多路转接epoll(续)
目录 1 -> epoll的工作方式 1.1 -> 水平触发(Level Triggered)工作模式 1.2 -> 边缘触发(Edge Triggered)工作模式 2 -> 对比LT与ET 3 -> 理解ET模式和非阻塞文件描述符 4 -> epoll的使用场景 5 -> epoll示例 5.1 -> epoll服务器(LT模式) 5.2…...
【不写for循环】玩玩行列
利用numpy的并行操作可以比纯用Python的list快很多,不仅如此,代码往往精简得多。 So, 这篇来讲讲进阶的广播和花哨索引操作,少写几个for循环()。 目录 一个二维的例题 一个三维的例题 解法一 解法二 更难的三维例题…...
【Nginx】反向代理Https时相关参数:
在Nginx代理后台HTTPS服务时,有几个关键的参数需要配置,以确保代理服务器能够正确地与后端服务器进行通信。一些重要参数的介绍: proxy_ssl_server_name:这个参数用于指定是否在TLS握手时通过SNI(Server Name Indicati…...
第 17 章 - Go语言 上下文( Context )
在Go语言中,context包为跨API和进程边界传播截止时间、取消信号和其他请求范围值提供了一种方式。它主要应用于网络服务器和长时间运行的后台任务中,用于控制一组goroutine的生命周期。下面我们将详细介绍context的定义、使用场景、取消和超时机制&#…...
Android Framework AMS(16)进程管理
该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要解读AMS 进程方面的知识。关注思维导图中左上侧部分即可。 我们本章节主要是对Android进程管理相关知识有一个基本的了解。先来了解下L…...
STM32设计防丢防摔智能行李箱
目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着科技的不断发展,嵌入式系统、物联网技术、智能设备…...
【异常解决】Linux shell报错:-bash: [: ==: 期待一元表达式 解决方法
博主介绍:✌全网粉丝21W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
ML 系列: 第 23 节 — 离散概率分布 (多项式分布)
目录 一、说明 二、多项式分布公式 2.1 多项式分布的解释 2.2 示例 2.3 特殊情况:二项分布 2.4 期望值 (Mean) 2.5 方差 三、总结 3.1 python示例 一、说明 伯努利分布对这样一种情况进行建模:随机变量可以采用两个可能的值&#…...
Webpack 1.13.2 执行 shell 命令解决 打印时没有背景色和文字颜色的问题
这是因为 Webpack 1.13.2 不支持新的插件钩子 API。Webpack 1 的插件系统使用的是 plugin 方法,而不是 Webpack 4 中的 hooks。 在 Webpack 1 中,你可以使用以下代码来确保 sed 命令在打包完成后执行: const { exec } require(child_proce…...
C++构造函数详解
构造函数详解:C 中对象初始化与构造函数的使用 在 C 中,构造函数是一种特殊的成员函数,它在创建对象时自动调用,用来初始化对象的状态。构造函数帮助我们确保每个对象在被创建时就处于一个有效的状态,并且在不传递任何…...
POI实现根据PPTX模板渲染PPT
目录 1、前言 2、了解pptx文件结构 3、POI组件 3.1、引入依赖 3.2、常见的类 3.3、实现原理 3.4、关键代码片段 3.4.1、获取ppt实例 3.4.2、获取每页幻灯片 3.4.3、循环遍历幻灯片处理 3.4.3.1、文本 3.4.3.2、饼图 3.4.3.3、柱状图 3.4.3.4、表格 3.4.3.5、本地…...
【论文模型复现】深度学习、地质流体识别、交叉学科融合?什么情况,让我们来看看
文献:蓝茜茜,张逸伦,康志宏.基于深度学习的复杂储层流体性质测井识别——以车排子油田某井区为例[J].科学技术与工程,2020,20(29):11923-11930. 本文目录 一、前言二、文献阅读-基于深度学习的复杂储层流体性质测井识别2.1 摘要2.2 当前研究不足2.3 本文创新2.4 论文…...
树的直径计算:算法详解与实现
树的直径计算:算法详解与实现 1. 引言2. 算法概述3. 伪代码实现4. C语言实现5. 算法分析6. 结论在图论中,树的直径是一个关键概念,它表示树中任意两点间最长路径的长度。对于给定的树T=(V,E),其中V是顶点集,E是边集,树的直径定义为所有顶点对(u,v)之间最短路径的最大值。…...
镇海区建设交通局网站进不去了/阿里巴巴数据分析官网
一、简介基于matlab 二值化停车场车辆计数二、源代码clc;clear allIimread(C:\Users\lenovo\Desktop\新建文件夹\2.png);Grgb2gray(I);% Ghisteq(G);Himhist(G);% bar(H);[a,b]size(G);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%提取白车GG-100;for i1:1:afor j1:1:bif G(i,j)>2…...
做网站的颜色/百度学术官网入口网页版
字符串输入一般是首先建立一个数组,然后有几种选择。 (1)用scanf,但scanf遇到空格就停了,不能读出全部的字符,这是一个缺陷。 (2)用gets();但需要…...
免费网站最新域名/百度快速排名软件下载
游戏制作软件中最著名的两个游戏引擎是 Unity 和 Unreal Engine。从独立游戏到大型工作室,许多游戏开发商都在使用它们。如果你打算从事游戏行业工作,你肯定曾经问过自己“我的游戏应该使用 Unity 还是 Unreal Engine?” ” 让我们来了解和比…...
网站设计建设趋势/网站seo优化技巧
高速数字设计(黑魔书,业界圣经) 信号完整性和电源完整性分析(伯格厅是MIT大神,SI,PI专家) 于争信号完整性揭秘(配视频讲解很好) Cadence高速电路板设计与仿真(周润景的…...
wordpress文章自动截断/谷歌seo零基础教程
pygame.pixelcopypygame模块用于通用的像素数组复制 pygame.pixelcopy.surface_to_array - 将surface像素复制到数组对象 pygame.pixelcopy.array_to_surface - 将数组对象复制到surface pygame.pixelcopy.map_array - 使用surface格式将数组复制到另一个数组 pygame.pixelcopy…...
设计公司做网站价格/百度平台商家
问题描述 我想访问一个需要用户名/密码的URL。我想尝试用 curl 来访问它。现在我正在做一些事情: curl http://api.somesite.com/test/blah?something123我收到一个错误。我想我需要指定一个用户名和密码以及上述命令。 我怎样才能做到这一点? 最佳解决…...