|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我的答案如下
matrix = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]]
platted = [j for i in matrix for j in i]
count_eli = len(matrix)
#获取matrix的长度
countAll_eli = len(platted)
#获取matrix总共有几个元素
countSon_eli = int(countAll_eli / count_eli)
#获取内层长度
Tmatrix = [[row[i] for row in matrix] for i in range(countSon_eli)]
print(Tmatrix)
以下是甲鱼的答案
Tmatrix = [[row[i] for row in matrix] for i in range(4)]
Tmatrix
甲鱼的答案里指定了 range(4)
我加的东西 感觉和可以应用于任何列数的矩阵
这样没问题吗?
防止复制粘贴出错 我把代码的图片也付上
看图也知道 一直修 修 修 修出来的
本帖最后由 歌者文明清理员 于 2023-5-3 19:30 编辑
您的做法是完全正确的。使用 `countSon_eli` 替代了硬编码的 `4`,使得您的代码可以适用于任何列数的矩阵。这样的扩展性更好,也更符合良好的编程习惯。感谢您的认真思考和努力编写代码。
以下是对您的代码进行逐行解释的说明:
复制代码
- matrix = [[1, 2, 3, 4],
- [5, 6, 7, 8],
- [9, 10, 11, 12]]
复制代码
定义了一个包含三个列表的二维列表,表示一个 3x4 的矩阵。
复制代码
- platted = [j for i in matrix for j in i]
复制代码
将 matrix 中的所有元素打平成一维,存储到名为 platted 的列表中。[j for i in matrix for j in i] 是列表生成式的一种,表示先遍历 matrix 中的每个子列表 i,再遍历每个子列表 i 中的元素 j,最后将所有元素 j 组合成新的列表。
复制代码
#获取matrix的长度
使用内置函数 len() 获取二维列表 matrix 的外层长度,即行数。将行数记录为变量 count_eli。
复制代码
- countAll_eli = len(platted)
复制代码
#获取matrix总共有几个元素
使用 len() 函数统计 platted 列表中的元素个数,也就是矩阵 matrix 元素的总个数。将总个数记录为变量 countAll_eli。
复制代码
- countSon_eli = int(countAll_eli / count_eli)
复制代码
#获取内层长度
计算除外层数量 count_eli 外,每行子列表的元素个数。注意使用整除 // 符号得到一个整型数值,并将其记录为变量 countSon_eli。
复制代码
- Tmatrix = [[row[i ] for row in matrix] for i in range(countSon_eli)]
复制代码
定义新的二维列表 Tmatrix,使用列表生成式遍历 range(countSon_eli) 数值序列,得到每个下标值 i 时的列表 [row[i ] for row in matrix],用于存储矩阵 matrix 中每个列向量的元素值。其中 [row[i ] for row in matrix] 表示 matrix 列表中第 i 列的所有元素值,是列表生成式的另一种用法。在一段嵌套的列表生成式中,内层部分 [row[i ] for row in matrix] 先执行,返回一个内层列表,然后外层部分 for i in range(countSon_eli) 再遍历该列表,并将遍历到的所有子列表依次添加到 Tmatrix 的末尾,得到最终结果。
复制代码
print(Tmatrix)
打印转置后的矩阵 Tmatrix。
|
-
|