【有书共读11】零压力学Python读书笔记10
第13章:二维数组
""" 矩阵:二维列表 """ # 创建简单的二维列表 list2D=[[0,1,2], [3,4,5], [6,7,8]] print(list2D) # 使用下标访问二维列表中的值 # 访问第二行第二个元素(注意索引号是从零开始的) num1=list2D[1][1] print(num1) # 访问一行元素 line1=list2D[0] print(line1) # print(list2D[3][3]) 越界一样会报错 # 不规则矩阵 mat=[[1]*2,[2]*4,[0,9,3,2,1,4]] print(mat) mat[0][0]=0 print(mat) # 使用* 创建二维列表存在的问题 mat1=[[0]*3]*3 print(mat1) # 打印的结果为 [[0, 0, 0], [0, 0, 0], [0, 0, 0]] # 我们修改其中一个值 mat1[1][1]=2 print(mat1) # 打印的结果为 [[0, 2, 0], [0, 2, 0], [0, 2, 0]] """ # 可以发现每一行的第二个元素都改变了 # 其实上面的生成二维列表的语句等价于下面的语句 row=[0]*3 mat1=[row,row,row] 所以当我们修改的时候其实是修改了row中的值,所以每一行都会改变 这个时候就要深刻理解“python将每一个变量都视为引用这句话了” """ # 创建实际的二维矩阵---逐步创建 ''' 一般创建二维列表的公式 name=[[val]*cols for _ in range(rows)] name: 二维列表名 val :初始的变量 cols:列数 rows:行数 _ :这里的‘_’在列表推导式中表示空变量 根据列表推导式可知,我们可以不断的添加推导字句, 要让矩阵有多少维度就可以有多少维度 ''' name=[['1']*10 for _ in range(3)] print(name) # 旋转矩阵 # 创建一个n*n的矩阵 n=5 map1=[[i]*n for i in range(n)] print(map1) """ 输出结果如下 [[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]] """ map2=[[0]*n for _ in range(n)] for i in range(n): for j in range(n): map2[i][j]=map1[j][n-1-i] print(map2) """ 输出结果为 [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]] 其实是for循环是可以改成列表推导式的,所以可以写出来很简单 map2=[[map1[i][n-1-i] for i in range(n)] for j in range(n)] 可以打印一下,结果是一样的 """
#笔记##Python##读书笔记#