鱼C论坛

 找回密码
 立即注册
查看: 3263|回复: 4

[已解决]Python P25讲课后习题 转置矩阵

[复制链接]
发表于 2022-8-9 20:53:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
matrix = [[1,2,3,4],
          [5,6,7,8],
          [9,10,11,12]]

Tmatrix = [[row[i] for row in matrix] for i in range(4)]
#此处列表推导式没有想明白,特别是执行顺序希望有大大们解释一下
#减少括号后能理解Tmatrix = [row[i] for row in matrix for i in range(4)],即为展开原矩阵

print(Tmatrix)
最佳答案
2022-8-9 22:47:29
本帖最后由 一点点儿 于 2022-8-9 23:06 编辑
Tmatrix = [[row[i] for row in matrix] for i in range(4)]
相当于
Tmatrix = [[row[0] for row in matrix],
           [row[1] for row in matrix],
           [row[2] for row in matrix], 
           [row[3] for row in matrix]]
也就是
Tmatrix = [[1, 5, 9],
           [2, 6, 10],
           [3, 7, 11], 
           [4, 8, 12]]


Tmatrix = [[row[i] for row in matrix] for i in range(4)]
for循环角度理解的话相当于
Tmatrix = []
for i in range(4):
    Tmatrix.append([row[i] for row in matrix])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-9 22:11:33 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2022-8-9 23:36 编辑
Tmatrix = [[row[i] for row in matrix] for i in range(4)]
相当于:(纯手写的,不知道会不会出错)
Tmatrix = []
for row in matrix:
        for i in range(4):
                Tmatrix.append(row[i])

看来一下其他人的回复,果然,写错了(大意了)

应该是这样:
matrix = [[1,2,3,4],
          [5,6,7,8],
          [9,10,11,12]]

Tmatrix = []
for row in matrix:
        temp = []
        for i in range(4):
                temp.append(row[i])
        Tmatrix.append(temp)
print(Tmatrix)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-9 22:18:34 | 显示全部楼层
本帖最后由 ba21 于 2022-8-9 22:19 编辑
#分解 [[row[i] for row in matrix] for i in range(4)]
tmp = []
for i in range(4):
    tmp.append([row[i] for row in matrix])

#分解 [row[i] for row in matrix]
tmp = []
for i in range(4):
    ####
    tmp2 = []
    for row in matrix:
        tmp2.append(row[i])
    ####    
    tmp.append(tmp2)
print(tmp)
# 列表推导式其实就是这样的简写 如:
v = [1, 2, 3]
# 列表推导式
lst = [i for i in v] 

# 一般写法
lst = []
for i in v:
    lst.append(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-9 22:47:29 | 显示全部楼层    本楼为最佳答案   
本帖最后由 一点点儿 于 2022-8-9 23:06 编辑
Tmatrix = [[row[i] for row in matrix] for i in range(4)]
相当于
Tmatrix = [[row[0] for row in matrix],
           [row[1] for row in matrix],
           [row[2] for row in matrix], 
           [row[3] for row in matrix]]
也就是
Tmatrix = [[1, 5, 9],
           [2, 6, 10],
           [3, 7, 11], 
           [4, 8, 12]]


Tmatrix = [[row[i] for row in matrix] for i in range(4)]
for循环角度理解的话相当于
Tmatrix = []
for i in range(4):
    Tmatrix.append([row[i] for row in matrix])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-10 10:33:19 | 显示全部楼层
笔记:加括号后,列表推导式的执行顺序为:先括号外,再括号内。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 08:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表