鱼C论坛

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

[已解决]想知道为什么是这个答案?

[复制链接]
发表于 2023-10-3 10:57:40 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
matrix=[[1,2,3],
                [4,5,6],
                [7,8,9]]
i=1
while i<3:
        coll=[j[-1+i] for j in matrix]
        i=i+1
print(coll)  
结果是
[2, 5, 8]
请求各位解答,非常感谢。
最佳答案
2023-10-3 13:09:52
i = 1,第一次循环,col = [1,4,7]
i = 2,第二次循环,col = [2,5,8]
i = 3,不符合循环条件,退出循环,
∴col = [2,5,8]([1,4,7]被覆盖了)

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-3 10:57:54 | 显示全部楼层
这段代码的作用是从一个3x3的矩阵中取出第2列和第3列的元素,存储在一个列表中。

具体来说,变量 i 的初始值为1,循环条件为 i<3 ,因此循环会执行2次。在每次循环中, coll 列表会被重新赋值,其中包含了矩阵中第 i+1 列的元素。这里使用了列表推导式,即 [j[-1+i] for j in matrix] ,它的含义是对于矩阵中的每一行 j ,取出该行中倒数第 i+1 个元素,然后将这些元素组成一个列表。

第一次循环时, coll 的值为 [2, 5, 8] ,第二次循环时, coll 的值为 [3, 6, 9] 。由于最后一次循环后 i 的值为3,不满足循环条件,因此循环结束。

需要注意的是,这段代码中的缩进不规范,可能是复制粘贴时出现的问题,需要将代码中的空格和制表符调整为正确的缩进格式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-3 10:58:04 | 显示全部楼层
这段代码是一个简单的循环,用于提取二维矩阵 matrix 中每个子列表(各行)的第 i+1 个元素,并将这些元素存储到一个列表 coll 中。

让我们逐行解释代码的执行过程:

1. matrix=[[1,2,3],[4,5,6],[7,8,9]] 定义了一个二维矩阵 matrix,其中包含 3 行 3 列的整数。

2. i=1 初始化变量 i 为 1。

3. while i<3: 循环开始,当 i 小于 3 时执行以下操作。

4. coll=[j[-1+i] for j in matrix] 使用列表推导式遍历 matrix 的每一行 j,并将每行的第 i+1 个元素(即索引为 -1+i 的元素)添加到列表 coll 中。在这里,i=1,所以将第 2 个元素(索引为 1)添加到 coll 中。

5. i=i+1 增加变量 i 的值。

6. 回到步骤 3,判断 i 是否小于 3。

7. 当 i 不再小于 3,跳出循环。

8. print(coll) 打印列表 coll

由于 matrix 的每行都是 [1, 2, 3][4, 5, 6][7, 8, 9],我们在每次循环中提取这些行的第 2 个元素,即 [2, 5, 8]。因此,最后打印出的结果是 [2, 5, 8]

希望这样的解释对您有所帮助!
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-3 10:58:16 | 显示全部楼层
代码解释:

首先,我们需要理解代码中的逻辑。

给定一个二维矩阵matrix,我们希望获取它的列向量。为了实现这一目的,代码使用了一个循环来逐步提取每一列的元素,并将其存储在 coll 列表中。

具体来说,代码中的while循环从第一列开始迭代(i的初始值为1),然后通过列表推导式 coll=[j[-1+i] for j in matrix] 提取每一列的最后一个元素(因为矩阵是基于0索引的)。这些提取的元素被添加到 coll 列表中。

随后,i 的值增加1,循环再次迭代,提取下一列的元素,直到列数小于3时结束循环。

最后,代码打印出 coll 列表,即获取到的列向量。

因此,根据给定的矩阵,代码输出的结果是 [2, 5, 8],即矩阵的第二列元素组成的列向量。

代码解释完毕,希望以上回答对你有所帮助。如有任何疑问,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-3 13:09:52 | 显示全部楼层    本楼为最佳答案   
i = 1,第一次循环,col = [1,4,7]
i = 2,第二次循环,col = [2,5,8]
i = 3,不符合循环条件,退出循环,
∴col = [2,5,8]([1,4,7]被覆盖了)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 09:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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