转置矩阵—列表使用练习

 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()

 

posted @ 2018-08-13 21:56  JerryZao  阅读(224)  评论(0编辑  收藏  举报