deweyoo 发表于 2021-8-7 00:13:28

求助 第023讲:列表(V)课后测试题 动动手1. 请编程找出矩阵中的幸运数字

本帖最后由 deweyoo 于 2021-8-7 00:14 编辑

求解 这个答案的解析, 尤其不太懂第17行      # 因为涉及付费内容以及给没有做题的同学提前泄露答案.故没有贴出原题目内容, 仅贴出答案


matrix = [,
          ,
          ]

row = len(matrix)
col = len(matrix)

min_row = * row
max_col = * col

# 遍历矩阵中的每一个元素
# 找到每行中最小的元素,并将它们存放到列表min_row中
# 找到每列中最大的元素,并将它们存放到列表max_col中
for i in range(row):
    for j in range(col):
      min_row = min(matrix, min_row)
      max_col = max(matrix, max_col)

# 遍历矩阵中的每一个元素
# 判断是否同时满足“同一行的所有元素中最小”和“同一列的所有元素中最大”
for i in range(row):
    for j in range(col):
      if matrix == min_row and matrix == max_col:
            print(matrix)


17.max_col = max(matrix, max_col)    # 找到每列中最大的元素,并将它们存放到列表max_col中

这里的 j 每次迭代,max_col 是否如下变化

[, , ]

第一次迭代

[, , ]

第二次迭代

[, , ]

第三次迭代

[, , ]


和注释里要达到的目的似乎不一致,还是我对这个迭代理解有误.烦请大佬指点, 谢谢

suchocolate 发表于 2021-8-7 01:10:20

max_col变化如你所说,结果是对的,你可以用pycharm或vscode插断点观察每一步。
带入数据,就是3x3遍历。逐个数据分别和预设的最小值0,和最大值1024比较。
min_row里只存当前比较过的最小的,max_col只存当前比较过的最大的。
刚开始比较看不出结果,之后所有数据遍历完才能出真正的结果。

deweyoo 发表于 2021-8-9 22:32:04

本帖最后由 deweyoo 于 2021-8-9 22:40 编辑

suchocolate 发表于 2021-8-7 01:10
max_col变化如你所说,结果是对的,你可以用pycharm或vscode插断点观察每一步。
带入数据,就是3x3遍历。 ...

谢谢您的回复, 原来是我没有继续往下看外层 i的循环, i 往后循环就能够实现提取出来每一列中的最大值了.

不得不佩服解题的公式设计, 还是自己没有编程思维哎.

页: [1]
查看完整版本: 求助 第023讲:列表(V)课后测试题 动动手1. 请编程找出矩阵中的幸运数字