转置矩阵—列表使用练习
1 ''' 2 求转置矩阵,方阵,普通矩阵 3 ''' 4 5 ''' 6 求转置矩阵,普通矩阵 7 l = [[1,2,3],[4,5,6]] 8 ---> a = [[1,4],[2,5],[3,6]] 9 ''' 10 # NO 1 11 l = [[1,2,3],[4,5,6],[7,8,9]] # 通常矩阵的表示方法可以利用列表,元组表示,但是元组不可变,所以选择列表 12 13 length = len(l) 14 for i in range(length): # 反正,可以考虑到是两层循环 15 for j in range(i): 16 17 l[j][i] ,l[i][j] = l[i][j],l[j][i] # 利用了封装与结构,右侧是一个元组,通过解构赋值给左侧的相应变量 18 print(l) 19 20 21 ''' 22 普通矩阵的转置 23 ''' 24 l = [[1,2,3],[4,5,6]] 25 26 # # 先得到一个新矩阵,利用填空模式,例如:杨辉三角对称法,单行模式法都有利用 27 length = len(l) 28 m = [[0 for i in range(length)] for i in range(len(l[0]))] # 利用列表解析,生成新的列表 29 30 # # 在添值 31 for i in range(length): 32 for j in range(len(l[0])): 33 m[j][i] = l[i][j] 34 print(m) 35 36 37 # 常规做法:效率有点低,但是思想不错 38 # 首先 原矩阵 2 * 3 转 为3 * 2 39 l = [[1,2,3],[4,5,6]] 40 tm = [] 41 42 for row in l:# 得到每一行 43 # print(row) 44 for j, val in enumerate(row): # 使用了enumerate() 内建函数 , j是索引号 45 if len(tm) < j + 1: # 第一行刚进来,因为要append到tm里的子列表中,所以需要生成。 46 tm.append([]) 47 tm[j].append(val) 48 print(tm) 49 50 # 其他思路: 51 a = [[1,2,3],[4,5,6]] 52 for i in range(3): 53 for j in range(2): 54 print('{}'.format(a[j][i]),end='') 55 print() 56 # -------------------------------------------- 57 a = '123\n456' 58 print(a) 59 l = a.split('\n') 60 print(l) 61 for j in range(3): 62 for i in range(2): 63 print('{}'.format(l[i][j]),end='') 64 print()
为什么要坚持,想一想当初!