python与材料计算公式_《从问题到程序:用Python学编程和计算》——2.11 补充材料-阿里云开发者社区...

本节书摘来自华章计算机《从问题到程序:用Python学编程和计算》一书中的第2章,第2.11节,作者 裘宗燕,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.11 补充材料

本书各章的主要内容将围绕着怎样通过编程解决计算问题展开,正文中对Python语言的机制只做必要的说明,有些细节情况没有涉及。另外,用Python编程也有许多有趣而且有用的技术。如果在各章的主要部分详细罗列,也可能冲淡讨论的主线。但是上述两方面的一些情况也值得介绍。本书采用的方法是在一些章的最后增加称为“补充材料”一节,补充一些细节,供读者参考,也供用本书教授课程的教师选用。

除了讨论语言细节和编程技术的两个小节外,有时还总结了一些常用的编程模式。练习中的第1题总是对本章内容做些总结,其中列出本章讨论过的重要概念。

2.11.1 语言细节

这里介绍Python语言中的一些与本章内容有关的情况,作为本章内容的补充。这里介绍的情况在本书中并不使用,对于初学者并不重要,可以有选择地阅读。提供这部分内容有两方面意义,首先是使本书中对Python语言的介绍较为完整。另一方面,读者在进一步使用Python去解决更复杂的问题时,也可能需要用到这里介绍的功能。

整数的二进制、八进制和十六进制字面量形式

Python只有一种整数,即是类型为int的整数。但另一方面,这个语言却为整数提供了多种不同的字面量描述方式。前面介绍的十进制字面量形式使用最普遍,但Python还提供了二进制、八进制和十六进制的整数字面量形式。现在介绍有关情况。

首先,二进制、八进制和十六进制的整数字面量形式,都由一个引导部分和一个数值部分组成,一个整数仍然写成一个连续的字符序列。这三种字面量的引导部分都以数字0开头,在0之后用一个字符相互区分,而后紧接着是一串表示其数值的数字(对于十六进制,其中还能包含一些英文字母,见下)。

二进制整数字面量的引导部分是0b或者0B,随后表示数值的部分中只能用两个数字0和1,是一段0/1序列。例如0b110101和0B110100。在b或B之后立刻出现几个0也允许,不影响结果的数值。二进制数的数值按如下方式计算:

这里实际上假设写出的二进制字面量包含n + 1位二进制数字。很容易看到,Python的二进制字面量只是整数的一种写法,例如:

>>> 0b110101

53

>>> 0B01001110

78

>>>

在二进制字面量里出现超出0和1的数字将作为出错。此外,Python标准函数bin返回与其整数参数对应的二进制字面量形式(结果是一个字符串)。例如:

>>> bin(78)

'0b1001110'

八进制整数字面量的引导部分用0o或者0O(这两种形式都很糟糕,0和O太像了),随后可以写出任意长的数字0到7的序列。其计值公式是:

例如:

>>> 0O12

10

>>> 0O1234567012345670

45954944846776

与二进制类似,表示数字的部分中不能出现数字8或9。标准函数oct返回与其整数参数对应的八进制字面量形式(是一个字符串)。

十六进制整数字面量的引导部分用0x或者0X。这里有一点麻烦:表示十六进制数的数值需要16个数字,但阿拉伯数字只有10个。Python采用计算机领域的习惯做法,用最前面6个英文字母填补空缺:a或A表示10,b或B表示11,c或C表示12,d或D表示13,e或E表示14,f或F表示15。下面是两个十六进制字面量:

>>> 0X12

18

>>> 0xdeadbeeffeeddeaf

16045690985374408367

``

十六进制数表示的计值公式与上面类似:

![image](https://yqfile.alicdn.com/80fe1ab655469f094b197d4963db896255b3860e.png)

标准函数hex返回其整数参数对应的十六进制字面量字符串。

用二进制、八进制、十六进制字面量都可以描述任意大的整数。

###整数的位运算

计算机里的数据都用二进制编码的形式表示,位(即二进制位,bit)是最基本的编码单位,也是最小的数据表示单位。在实际问题中,有些对象的变化情况很简单,只用一个或几个位就能表示,如果程序里这种数据很多,把它们表示为某类型的对象,可能造成很大的存储浪费。一种可能办法是把多个这类数据对象存入一个整数类型的对象。此外,一些与底层有关的程序可能需要操作二进制位数据。例如,硬件工作状态信息通常用二进制位串表示,操作硬件时就需要用位串形式发命令。为适应这些情况,Python语言提供了针对整数中二进制位的操作。有关的运算符称为按位运算符。

先介绍基本的位运算,它们是按位运算符的基础。一个二进制位只能取值0或1,位运算就是对二进制位的运算,从一个或两个0/1值出发,算出0/1结果。常用位运算共有四个,其中“否定”为一元运算,其他都是二元运算,运算规则很简单,见下表:

![image](https://yqfile.alicdn.com/3e4127ca9ed920c00e1beb42c5e92d241cb6d14b.png)

从这个表可以看出,否定就是1变0而0变1;只有1和1“与”的结果是1,其他情况的结果均为0;0和0“或”的结果为0,其他情况结果都是1;“异或”运算看两个被操作位是否相同,相同时是1,否则是0。

与上面的位运算相对应,Python语言定义了四个按位运算符,把它们作用于整型对象,得到整型结果。这些按位运算符把整数看成二进制位的序列。按位否定运算符是一元运算符,作用于一个整数类型的运算对象,其余三个都是二元运算符,作用于两个整数类型的运算对象。在运算时,它们对运算对象的一个个(或一对对)二进制位分别做位运算,得到结果的各位。四个按位运算符是:

![image](https://yqfile.alicdn.com/711a9b8de13e22a90091ab329b57f921d872745a.png)

看一个例子,假设变量x和y都是16位整数,它们值分别是:

x: 0010,1001,0101,0111

y: 1001,1100,1111,1010

对x和y做各种按位运算,得到的结果如下:

~x 1101,0110,1010,1000

x & y 0000,1000,0101,0010

x | y 1011,1101,1111,1111

x ^ y 1011,0101,1010,1101

请读者根据这个例子,对照上面说明,设法弄清各按位运算符的意义。注意,这里整数表示中的逗号只是为了阅读方便。

这些运算符可以作用于任意大的整数对象,得到任意大的结果。如果两个整数的长度不同,Python有默认的处理方式,总之不会丢失信息。

除了上面4个按位运算符外,Python还有两个与二进制位有关的整数运算符,分别是左移运算符“<>”。它们的左边是被位移的整数对象,右边的整数表示希望左移或右移的位数。举例说,对上面的y将有:

y <

y >> 3: 0001,0011,1001,1111

可以看到,左移(或右移)空出的二进制位全部补0。

另请注意,上面的这六个运算符都是做运算,产生新的整数对象。例如3 << 3“算出”一个结果(一个新的整数对象24)。假设变量z的值是3,z << 3得到24,但z的值不变。要改变z的值就需要赋值,或者用下面介绍的扩充赋值运算符。

上述运算符的优先级情况有些复杂:一元否定运算符的优先级与一元正负号相同,移位运算符的优先级低于整数加减,三个二元按位运算符的优先级互不相同,从高到低依次为 &、|、^,但都低于移位运算符。所有二元运算符都按从左到右结合。例如x << 3 >> 5相当于(x << 3) >> 5。由于优先级的情况比较复杂,建议少写过分复杂的表达式,多用括号显式描述运算的顺序。

与上述5个二元位运算符相对应,Python有5个扩充赋值运算符,它们分别基于赋值符之后的第二个参数修改左边表达式的对象(最简单情况用变量表示):

![image](https://yqfile.alicdn.com/cf42c76268f11b67a5c48a651cf939d88a62cde3.png)

例如,x <<= 5效果相当于x = x << 5,但书写方便,通常效率更高。

###有关浮点数的进一步说明

高级语言的浮点数一般都直接映射到语言系统运行所在的计算机硬件,因此高级语言中的浮点数及浮点数计算直接反映了硬件的相关特征。在计算机设计层面,目前大多数硬件的浮点数计算都采用IEEE 754标准。这里的IEEE是电气和电子工程师协会的简写,它是目前全球最大的一个非营利性专业技术学会。IEEE 754是IEEE颁布的一个浮点数算术系统标准,被大多数计算机硬件厂商采纳。Python语言并没有强制性地规定采用IEEE 754浮点数(如果那样,在不执行这个标准的硬件上将很难实现Python),但常见环境中运行的Python中的浮点数应该符合这个标准。下面介绍最常用的浮点数情况。

在常规系统上运行的CPython都采用IEEE 754的双精度浮点数标准作为语言的浮点数。这种浮点数用64位二进制码表示,其中指数部分用11位,可以表示-1023到1023;表示数值的部分(术语是尾数部分)用52位,另有一个符号位表示正负数。

指数部分的大小决定了浮点数的表示范围,绝对值最大(最小)大约是±21023的量级。换算到十进制数,表示的范围(如前面所说)大致为±5×10-324~1.7×10308。尾数的位数决定了浮点数的表示精度,52位二进制数大约相当于十进制的16到17位。超过上述范围的实数在这里无法表示。即使在范围内,浮点数表示也受到精度的限制,只能表示数轴上一个个能用二进制编码形式表示的孤立点。

IEEE 754的具体表示方式还有些细节,但知道上面这些对于初学者已经够了。从基本编程的需要看,只需了解这种浮点数标准的表示范围和精度。许多其他语言的实现也采用IEEE 754的双精度浮点,其他Python实现多半也采用这个标准。

###浮点数舍入转换

从浮点数转换到整数,默认转换方式是舍去小数部分,通常称为截尾。内置函数round采用另一种转换方式,通过舍入得到与浮点数最近的整数。但什么是最近呢?中小学的算术里教过“四舍五入”的舍入规则,但显然这一规则偏向于入,从统计的观点看,这样得到的整数值偏大。银行总按四舍五入付钱就会亏本,长期做下去累积的“入”也会导致亏本很多。为了防止这种情况,人们提出了另一种更为公平的舍入方式。

Python的round函数采用所谓“银行家舍入”方法,可称为“四舍六入五取偶”舍入,这也是目前常见计算机硬件采用的舍入计算标准(IEEE 754浮点数标准中的舍入计算标准方法,目前编程语言和工具大都直接借用这一舍入计算标准)。

具体说,如果需要舍入部分的最高位小于等于4和大于等于6,就直接分别舍去或者进位。假设需要舍入的那段数字的最高位是5,如果在这个5之后还有不为0的有效位(也就是说,明确地大于5),转换时就进位。如果5之后都是0位,则根据5的前一位舍入:前一位是奇数时进位,前一位是偶数时舍去。这里把0也看作偶数。与简单的四舍五入,“银行家舍入”在概率上更公平。按照这种规则,可以看到:

round(0.5)

0

round(1.5)

2

round(-0.5)

0

round(-1.5)

-2

### 字符串和换意序列

在写字符串时有些字符无法直接写出,换行符是这种字符的典型代表。由于有这种情况,Python(与其他一些语言一样)引入了换意序列的概念,用一种特殊形式的字符序列(包含两个或更多字符)表示字符串里的一个字符。换意序列的第一个字符总是下划线符,也就是说,字符串里出现的下划线符总表示换意序列开始,后面字符(序列)决定换意序列表示的字符。前面介绍过几个常用换意字符,下面是它们和另外几个及其解释:

![image](https://yqfile.alicdn.com/e293fe50e5b49ec267283cf061a88d39382efb69.png)

![image](https://yqfile.alicdn.com/6221dfcb6ce49039a0d3f94539cb858bc82bbbf6.png)

其中,“\换行符”表示反斜线后紧跟换行。“\ooo”表示反斜线后紧跟3位八进制数字,这种形式的换意序列表示编码为八进制为ooo的字符。“\xhh”表示反斜线后有一个x,后跟2位十六进制数字(包括A/B/C/D/E/F),这种换意序列表示编码为hh的字符。

除上面这些表示形式外,Python还支持用于写出所有Unicode字符的换意序列形式。这方面的细节这里不进一步介绍了。

用一对三个引号的形式,在字符串字面量中可以包含换行,不必再写换意序列“\n”。此外,采用三个引号的形式,多数时候也不需要用单引号和双引号的换意序列“\'”和“\"”。但有时还可能需要,例如下面字面量没问题:

""""Is this

the book

of you?", she asked"""

开头的连续四个引号被正确解析为一个连续三引号和一个双引号。但

""""Is this

the book

of you?""""

将报错。开始的连续四个双引号可以正确解析,但最后的四个双引号不行:解释器看到前三个双引号,认为它是字符串的结束标志,字符串到此结束。又看到一个双引号,解释器认为另一个字符串从这里开始。遇到换行,它认为字符串没完,报语法错误。要正确写出这个字符串(内容是一对双引号括起的一句话),可以写:

""""Is this

the book

of you?""""

或者更简单的,用一对三个单引号作为字符串括号。

如果在一行里连续写出几个字符串,解释器会自动将其连接成一个字符串:

s = 'abc' "123"

s

'abc123'

但是,解释器只是在处理字符串字面量,才这样做。例如:

t = '456'

s t

SyntaxError: invalid syntax

如果要拼接作为变量值的字符串,必须用拼接运算符(加法符号)。

###基本语句

表达式可以写在程序中任何应该写语句的位置,这样的表达式就构成了一个表达式语句。在一般程序里,把普通表达式(例如算术表达式1 + 2等)作为语句使用意义不大。运行中执行这个语句时就求值该表达式,求出值后该语句的执行完成,表达式的值随后将被丢掉,不产生任何效果(除了表达式计算可能耗费计算机时间)。

有用的表达式语句主要是函数调用。在Python里,函数调用是一类基本表达式。独立写出的函数调用就构成了一个表达式语句。前面程序里已经多次出现这种表达式语句,例如对内置函数print的调用语句。实际上,任何无特定返回值的函数(实际上返回None),通常都以表达式语句的方式使用。

Python允许在一行中写多个语句,这时要求语句之间加分号。例如:

x = len; y = x + 1

这样一行仍看作一个语句,在其执行时将顺序执行其中的成分语句。最后的成分语句执行完毕时整个语句的执行完成。这种语句是顺序语句的一种形式。当然,这种形式中也可以写任何语句,不仅是赋值语句。例如在一个循环里写:

x = y + 4; continue

虽然语言允许上面的形式,有时也会看到有人把几个简单语句写在一行。但在Python编程实践中,人们不大倡导这种形式。在绝大多数Python程序里,人们坚持一行一个语句的基本规则。在一些情况下用并行赋值语句同时给几个变量赋值。

###2.11.2 编程技术

本节讨论几个与编程有关的技术问题。

###条件语句与条件表达式

在一些情况下,条件语句和条件表达式都能使用。例如下面同样函数的两个定义:

def abs(x):

if x 

return -x

else:

return x

def abs(x):

return -x if x 

两个函数功能完全一样,但后一个简单许多。参考这个实例,可以总结出适合使用条件表达式的情况:在需要根据条件,从两种不同的表达式计算中选一个,而且计算比较简单时,采用条件表达式可以简化程序。条件语句适合用于各种赋值情况,其一个分支中可以包含任意复杂的操作序列。用来处理上面问题,是大材小用了。

在后面章节里,还会看到许多使用条件表达式的有意思的例子。

###写表达式的技术

如果需要写的计算表达式非常复杂,应该设法做出安排,使写出的程序代码清晰易读,容易检查表达式书写的正确性。有两种方法可以参考。

其一是分解表达式,用一个或几个中间变量记录表达式中子部分的结果,而后用这些变量的值组合出最终的表达式。适当的分解有助于保证表达式的可读性和正确性。

如果确实需要或者希望写很长的表达式,那就需要安排好表达式的多行格式。首先做好准备,为能把表达式写在多个行里,可以参考前面基于三边求三角形函数中条件的写法,先加入一个括号保证解释器不会把表达式截断,而后在每行适当的地方断行,各行中属于同层的结构相互对齐(仿照Python语言的格式)。例如,下面是一个长表达式:

x = ((a1 a2 - b1 b2 - c1 c2 - d1 d2) +

(a1 b2 + a2 b1 + c1 d2 - c2 d1) * i +

(a1 c2 + a2 c1 + b2 d1 - b1 d2) * j +

(a1 d2 + a2 d1 + b1 c2 - b2 c1) * k)

为能写跨越多行的长表达式,在上面表达式开始加了一个括号。在上述表达式中,我们把属于同一层的子表达式对齐,分别放在几行。这样写表达式,很容易检查,容易发现错误。IDLE或其他支持Python的开发系统都能帮助维持良好的表达式形式。但如何断行等,还是需要人做好安排。

###数值计算函数中错误情况的返回值

有些数值计算函数不是全函数(相对于参数的类型而言),如果被调用时得到的参数不满足需要,它将无法返回一个正确的结果。在这种情况下可以考虑报错(后面介绍),也可以考虑让函数返回一个特殊值。不同的处理方式各有优缺点。

本章中出现了几种处理方法:求阶乘函数对于负的参数都返回0;计算三角形面积的函数,对于不能构成三角形三边的参数,返回float("nan")表达式的值。后面还会看到一些情况,这些做法都可以参考。

###本章介绍的Python关键字

这里列出本章讨论过的Python关键字,供读者参考:from,import,and,or,not,True,False,if,else,elif,for,in,while,break,continue,def,return,None,pass。在总共33个关键字中,本章已经介绍了19个。包括:

- 3个特殊字面量,表示逻辑常量的True和False,以及特殊值None;

- 3个逻辑运算符and、or和not(not还有其他使用方式,见后面的介绍);

- 流程控制结构中用6个,if,else,elif、for、in、while;

- 专门语句用4个:break,continue,return,pass;

- 程序包导入语句用from和import;

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

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

相关文章

centos 6.9 NTP基准时间服务器配置

时间服务器端 yum install ntp -y vim /etc/ntp.conf 增加允许客户端访问 restrict 192.168.0.0 mask 255.255.0.0 nomodify 配置成自启动 chkconfig ntpd on service ntpd start 客户端配置 每天对时一次 crontab -e * 2 * * * ntpdate 192.168.139.130 转载于:https://www.cn…

hsdfz -- 6.16 -- day1

恩这回不写游记了 按照老师要求记录今天的心里路程&#xff1a;这题似乎可做期望得分150->日部分分似乎不是很显然->a题似乎是结论题&#xff0c;大力猜一波结论->过不了样例&#xff0c;先看b题->b题动态树&#xff0c;似乎可以肝lct->不会维护重链&#xff0c…

课时39.细线表格(理解)

请你设计出以下图片里的这个样式的表格 步骤&#xff1a; 我先来制作一个两行两列的表格 2.将table里的cellspacing设置成0 外边距是不见了&#xff0c;但是和我们想要完成的图片有一定的差距&#xff0c;我们发现这样做出来的图片好像是两条线合并到了一起一样&#xff0c;实…

强制Tomcat通过SLF4J / Logback登录

因此&#xff0c;您将JAR可执行Web应用程序与Tomcat捆绑在一起 &#xff08;请务必先阅读其中一个&#xff09;。 但是&#xff0c;开头有这些烦人的Tomcat日志&#xff0c;与我们的应用程序日志无关&#xff0c;并且不可自定义&#xff1a; Nov 24, 2012 11:44:02 PM org.apa…

matlab拼碎纸片过程,碎纸片拼接复原模型

1. 引言破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。企事业、机关、院校和军队基于保密的需要&#xff0c;使用碎纸机对重要文件&#xff0c;单据以及材料进行销毁。一些重要的文件随着时间流逝&#xff0c;残破不全&#xff0c;因此&…

python实现贝叶斯分类器_python实现简单的朴素贝叶斯分类器

本文使用的测试问题是“皮马印第安人糖尿病问题”这个问题包括768个对于皮马印第安患者的医疗观测细节&#xff0c;记录所描述的瞬时测量取自患者的年龄&#xff0c;怀孕和血液检查的次数。所有患者都是21岁以上的女性&#xff0c;所有属性都是数值型&#xff0c;而且属性的单位…

VC++编译MPIR 2.7.0

目录 第1章编译 2 1.1 简介 2 1.2 下载 3 1.3 解决方案 4 1.4 创建项目 5 1.5 复制文件树 6 1.6 不使用预编译头文件 8 1.7 包含目录 9 1.8 定义宏 10 1.9 编译前事件 11 1.10 修改 obj 的位置 13 1.11 编译yasm 14 1.12 编译汇编代码 …

PHP大数据处理【转】

1&#xff1a;硬件方面 普通的一个p4的服务器每天最多能支持大约10万左右的IP&#xff0c;如果访问量超过10W那么需要专用的服务器才能解决&#xff0c;如果硬件不给力 软件怎么优化都是于事无补的。主要影响服务器的速度 有&#xff1a;网络-硬盘读写速度-内存大小-cpu处理速度…

http1.X与2.0

HTTP HTTP 1.X HTTP是建立在TCP协议上的&#xff0c;HTTP协议的瓶颈及优化都是基于TCP协议本身的特性。TCP建立连接时有三次握手 会有1.5RTT的延迟&#xff0c;为了避免每次请求都经历握手待来的延迟&#xff0c;应用层会选择不同策略的http长连接。 HTTP 1.0 连接不能复用以…

php代码清除空格注解,去除php注释和去除空格函数分享

虽然php5中已有php_strip_whitespace方法可以返回删除注释和空格后的PHP源码的功能&#xff0c;为了学习&#xff0c;这里为大家提供一个自己的方法&#xff0c;也可以去除代码中的空白和注释&#xff0c;代码如下&#xff1a;. 代码如下:/*** 去除代码中的空白和注释* param s…

包装的重要性

我记得大约15年前开始学习Java的时候。 我读了很多有关“包装”和“命名空间”的东西&#xff0c;但我完全不了解。 可悲的是&#xff1a;虽然包装的某些方面几乎为业内每个人所了解&#xff0c;但其他方面却并非如此。 因此&#xff0c;让我们看一下哪些软件包最适合。 命名空…

我的python学习笔记全集_我的python学习笔记

(此文是在实际工程中遇到的一些小问题&#xff0c;给予解决和整理。解决方法大多来自网上零散的文章。)1——如下代码&#xff0c;a[1,2,3]bab也是[1,2,3]了&#xff0c;接着a[0]4a[1]5a[2]6此时a变成[4,5,6]了&#xff0c;再看b&#xff0c;a变了之后没有对b进行新的引用&…

课时28.假链接(掌握)

什么是假链接&#xff1f; 就是点击之后不会跳转的链接我们称之为假链接。 假链接存在的意义&#xff1f; 在企业开发前期&#xff0c;其他界面都没有写出来&#xff0c;那么&#xff0c;我们就不知道应该跳转到什么地方&#xff0c;所以就只能使用假链接来代替&#xff0c;…

笔记45 | 代码性能优化建议[转]

地址 笔记45 | 代码性能优化建议[转] 目录 前言避免创建不必要的对象选择Static而不是Virtual常量声明为Static Final避免内部的Getters/Setters使用增强的For循环使用包级访问而不是内部类的私有访问避免使用float类型使用库函数谨慎使用native函数关于性能的误区前言 通常来说…

导弹拦截

链接 分析&#xff1a;经典DP题&#xff0c;最长不下降子序列的变种&#xff0c;同时需要记录路径&#xff0c;用pre[]数组记录当前结点的前一个结点的方法很妙 1 #include "iostream"2 #include "cstdio"3 #include "cstring"4 #include "…

JUnit4参数化和理论示例

我始终依靠TestNG将参数传递给测试方法&#xff0c;以便为我的测试或套件提供一些灵活性。 但是&#xff0c;使用JUnit4可以实现相同的灵活性。 要使用它很简单&#xff1a; package com.marco.test;import java.util.Arrays;import java.util.Collection;import junit.fram…

杨杰matlab神经网络30例,MATLAB神经网络30例

实例1 BP神经网络在非线性函数拟合中的应用11.1 理论基础11.1.1 BP网络概述11.1.2 BP神经网络的MATLAB函数21.2 非线性函数拟合方法6实例2 主元BP神经网络在股票价格预测中的应用122.1 理论基础122.1.1 主成分分析的原理122.1.2 主元神经网络与股票预测142.2 股票价格的预测方法…

HTMLCSS 问题

1.子div使用浮动&#xff0c;父div高度自适应(个人感觉好用) 方法&#xff1a; css: <style> .clear{ clear:both} </style> html&#xff1a;在父div关闭之前添加<div class"clear"></div> 本文转载于:猿2048⇛https://www.mk2048.com/…

python matplotlib数据可视化教程_matplotlib的Python数据可视化和探索——入门指南

matplotlib——最受欢迎的Python库&#xff0c;用于数据可视化和探索我喜欢在Python中使用matplotlib。这是我学会掌握的第一个可视化库&#xff0c;此后一直存在。matplotlib是最受欢迎的用于数据可视化和探索的Python库&#xff0c;这是有原因的——它提供的灵活性和敏捷性是…

mysql 查询所有子节点的相关数据

定义一个函数 CREATE DEFINERrootlocalhost FUNCTION getColumnChildLst(rootId INT) RETURNS varchar(1000) CHARSET utf8 BEGINDECLARE sTemp VARCHAR(1000);DECLARE sTempChd VARCHAR(1000);SET sTemp $;SET sTempChd cast(rootId as CHAR);WHILE sTempChd is not null DOS…