Python中创建二维列表/数组,即创建一个list,并且这个list的元素还是list。可以用列表解析的方法实现。
创新互联公司-专业网站定制、快速模板网站建设、高性价比任县网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式任县网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖任县地区。费用合理售后完善,十年实体公司更值得信赖。
创建例子如下:
2d_list = [[0 for col in range(cols)] for row in range(rows)]
其中cols, rows变量替换为你需要的数值即可,例如:
2d_list = [[0 for col in range(9)] for row in range(9)]
# 9*9的二维列表
matplotlib是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。本文将以例子的形式分析matplot中支持的,分析中常用的几种图。其中包括填充图、散点图(scatter plots)、. 条形图(bar plots)、等高线图(contour plots)、 点阵图和3D图,下面来一起看看详细的介绍:
一、填充图
参考代码
简要分析
这里主要是用到了fill_between函数。这个函数很好理解,就是传入x轴的数组和需要填充的两个y轴数组;然后传入填充的范围,用where=来确定填充的区域;最后可以加上填充颜色啦,透明度之类修饰的参数。
相关推荐:《Python教程》
效果图
二、散点图(scatter plots)
参考代码
简要分析
1.首先介绍一下numpy 的normal函数,很明显,这是生成正态分布的函数。这个函数接受三个参数,分别表示正态分布的平均值,标准差,还有就是生成数组的长度。很好记。
2.然后是arctan2函数,这个函数接受两个参数,分别表示y数组和x数组,然后返回对应的arctan(y/x)的值,结果是弧度制。
3.接下来用到了绘制散点图的scatter方法,首先当然是传入x和y数组,接着s参数表示scale,即散点的大小;c参数表示color,我给他传的是根据角度划分的一个数组,对应的就是每一个点的颜色(虽然不知道是怎么对应的,不过好像是一个根据数组内其他元素进行的相对的转换,这里不重要了,反正相同的颜色赋一样的值就好了);最后是alpha参数,表示点的透明度。scatter函数的高级用法可以参见官方文档scatter函数或者help文档,最后设置下坐标范围就好了。
效果图
三、等高线图(contour plots)
参考代码
简要分析
1.首先要明确等高线图是一个三维立体图,所以我们要建立一个二元函数f,值由两个参数控制,(注意,这两个参数都应该是矩阵)。
2.然后我们需要用numpy的meshgrid函数生成一个三维网格,即,x轴由第一个参数指定,y轴由第二个参数指定。并返回两个增维后的矩阵,今后就用这两个矩阵来生成图像。
3.接着就用到coutourf函数了,所谓contourf,大概就是contour fill的意思吧,只填充,不描边;这个函数主要是接受三个参数,分别是之前生成的x、y矩阵和函数值;接着是一个整数,大概就是表示等高线的密度了,有默认值;然后就是透明度和配色问题了,cmap的配色方案这里不多研究。
4.随后就是contour函数了,很明显,这个函数是用来描线的。用法可以类似的推出来,不解释了,需要注意的是他返回一个对象,这个对象一般要保留下来个供后续的加工细化。
5.最后就是用clabel函数来在等高线图上表示高度了,传入之前的那个contour对象;然后是inline属性,这个表示是否清除数字下面的那条线,为了美观当然是清除了,而且默认的也是1;再就是指定线的宽度了。
效果图
题目:找出两个字符串的最长公共字串,例如字符串“abccade”与字符串“dgcadde”的最长公共子串为“cad”。
分析:动态规划法。通过把中间的比较结果记录下来,从而可以避免字符的重复比较。:
首先定义二元函数(i,j):表示分别以s1[i],s2[j]结尾的公共子串的长度,显然,f(0, j) = 0 (j = 0),f(i, 0) = 0(i = 0),那么对于f(i +1, j + 1)而言,则有如下两种取值:
(1) f(i + 1, j +1) = 0,当str1[i + 1] != str2[j + 1]时
(2)f(i + 1, j +1) = f(i, j) + 1,当str1[i + 1] == str2[j + 1]时
根据这个公式可以计算出f(i, j)(0= i=len(s1), 0 = j = len(s2),所有的值,从而可以找出最长的子串。
def getMaxSubStr(str1, str2):
len1 = len(str1)
len2 = len(str2)
sb = ''
maxs = 0 # 用来记录最长公共子串的长度
maxI = 0 # 用来记录最长公共字串最后一个字符的位置
# 申请新的空间来记录公共字串长度信息
M = [([None] * (len1 + 1)) for i in range(len2 + 1)]
i = 0
while i len1 + 1:
M[i][0] = 0
i += 1
j = 0
while j len2 + 1:
M[0][j] = 0
j += 1
# 通过利用递归公式填写新建得二维数组(公共字串得长度信息)
i = 1
while i len1 + 1:
j = 1
while j len2 + 1:
if list(str1)[i - 1] == list(str2)[j - 1]:
M[i][j] = M[i - 1][j - 1] + 1
if M[i][j] maxs:
maxs = M[i][j]
maxI = i
else:
M[i][j] = 0
j += 1
i += 1
i = maxI - maxs
while i maxI:
sb = sb + list(str1)[i]
i += 1
return sb
if __name__ == "__main__":
str1 = 'abccade'
str2 = 'dgcadde'
print(getMaxSubStr(str1, str2))
程序运行结果:
cad
有不少同学学完 Python 后仍然很难将其灵活运用。我整理15个 Python 入门的小程序。在实践中应用 Python 会有事半功倍的效果。
实现数学里的二元二次函数: f(x, y) = 2x^2 + 3y^2 + 4xy ,需要用到指数运算符 **
将一个正整数的个位数,以及除个位数外的部分分离。需要用到 模(取余数) 运算符 % ,和 整除 运算符 //
实现一个简单的累加器,可以接受用户输入3个数字,并将其累加。需要用到 复合赋值运算符:+=
输入年份,判断是否是闰年。闰年判断方法:能被4整除,但不能被100整除;或者能被 400 整除。需要用到 算术运算符 和 逻辑运算符
输入一个数字,判断基数还是偶数,需要 模 运算和 if ... else 结构
之前做过华氏度转摄氏度,现在通过 分支结构 实现二者互转。
输入三个边长度,判断是否构成三角形。 构成三角形的条件:两边之和大于第三边 。
输入成绩分数,输出分数对应的等级。
某企业的奖金根据销售利润按照如下规则计算提成。输入销售利润,计算奖金。
程序随机生成一个正整数,用户来猜,程序根据猜的大小给出相应的提示。最后,输出用户猜了多少次才猜中。
输入一个正整数,判断是否是素数。 素数定义:大于1的自然数中,只能被1和它本身整除的自然数。如:3、5、7
用程序实现石头剪刀布 游戏 。
字典的key是姓名,value是身高,现在需要按照身高对字典重新排序。
将二元二次函数封装在函数中,方便调用
初学python的小伙伴注意哦~不要只依赖于教程,而忽视实操的能力。不然,是很难有进步的。可以多动动手,尝试一下,积累经验。