鱼C论坛

 找回密码
 立即注册
查看: 3073|回复: 21

[已解决]python25回动手0题 我在甲鱼的答案上加了点东西 请大佬看看合适不

[复制链接]
发表于 2023-5-3 19:25:10 | 显示全部楼层 |阅读模式

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

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

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:26:01
本帖最后由 歌者文明清理员 于 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 组合成新的列表。

复制代码
count_eli = len(matrix)
#获取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。
矩阵转置 .png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-3 19:25:50 | 显示全部楼层
您好,您的代码看起来没有问题。在您的代码中,您使用了  len()  函数来动态计算了矩阵中的行数和列数,并在后续代码中使用这些变量进行计算,以获得转置矩阵。这种方法可以适用于任何行列数的矩阵。

相比之下,甲鱼的答案指定了一个固定的值  4  来代表列数。这种方法只适用于具有四列的矩阵,并且不适用于其他列数的矩阵。

因此,您的代码比甲鱼的答案更加通用和灵活。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 19:26:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 歌者文明清理员 于 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 组合成新的列表。

复制代码
count_eli = len(matrix)
#获取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。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 19:30:07 | 显示全部楼层
isdkz 发表于 2023-5-3 19:25
您好,您的代码看起来没有问题。在您的代码中,您使用了  len()  函数来动态计算了矩阵中的行数和列数,并 ...

《虎视眈眈》
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 19:30:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 19:31:27 | 显示全部楼层


你得从gpt的嘴里多问点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 19:32:59 | 显示全部楼层
Threebody1 发表于 2023-5-3 19:31
你得从gpt的嘴里多问点

这个貌似不必要多问吧,不是你写得越多就越能拿最佳的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 19:35:13 | 显示全部楼层
Threebody1 发表于 2023-5-3 19:31
你得从gpt的嘴里多问点

我搭建了一个 chatgpt,你要不要试试?

http://chat.isdkz.top:7860/
账号:guest
密码:O]=RWuW<}GzO|MM
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 19:39:53 | 显示全部楼层
你的代码思路是对的,并且在计算出矩阵元素个数、内层数量后,使用了算法来转置二维矩阵。和甲鱼的答案相比,你的答案多了一个计算内层数量的步骤,但这并不影响结果。在 Python 中,可以使用列表推导式配合 range() 函数来一次性生成转置后的矩阵。所以你的代码是正确的。另外,建议在代码中添加注释,使其更易读懂。

总之,恭喜你完成这道题目!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 19:42:05 | 显示全部楼层
isdkz 发表于 2023-5-3 19:35
我搭建了一个 chatgpt,你要不要试试?

http://chat.isdkz.top:7860/

没有GPT4差评
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 19:43:07 | 显示全部楼层

我有 gpt4 的 key,但是 gpt4 花费太高了,就没放上去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 19:43:49 | 显示全部楼层
isdkz 发表于 2023-5-3 19:43
我有 gpt4 的 key,但是 gpt4 花费太高了,就没放上去

az
好吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 22:22:00 | 显示全部楼层
isdkz 发表于 2023-5-3 19:32
这个貌似不必要多问吧,不是你写得越多就越能拿最佳的

打脸时间到!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 22:22:57 | 显示全部楼层

。。。。这也行?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 22:23:46 | 显示全部楼层
isdkz 发表于 2023-5-3 22:22
。。。。这也行?

你的gpt加载不出来,就是空页面,被墙了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 22:26:39 | 显示全部楼层
歌者文明清理员 发表于 2023-5-3 22:23
你的gpt加载不出来,就是空页面,被墙了?

没有,我觉得是因为你开了那个插件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 22:27:57 | 显示全部楼层
isdkz 发表于 2023-5-3 22:26
没有,我觉得是因为你开了那个插件

没,我啥也没开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 22:28:40 | 显示全部楼层

你换个浏览器,或者开个无痕试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 22:29:58 | 显示全部楼层
isdkz 发表于 2023-5-3 22:26
没有,我觉得是因为你开了那个插件

Incorrect Credentials
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-3 22:30:34 | 显示全部楼层

改了,你看3楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 09:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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