鱼C论坛

 找回密码
 立即注册

[已解决]else 的作用和用法

  [复制链接]
 楼主| 发表于 2024-9-15 17:31:26 | 显示全部楼层
@FishC

帮看下这个代码
matrix = [[10, 36, 52],[33, 24, 88],[66, 76, 99]]
x = len(matrix)
nums = 0
nums1 = 0

for i in range(x):
    s =len(matrix[i])
    for n in range(s):
        if nums1 ==0:
            nums1 = n
        if nums1 > n:
            nums1 =n
    print(nums1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-15 17:31:37 | 显示全部楼层
萌萌哒的杂粮饼 发表于 2024-09-15 17:31
@FishC

帮看下这个代码
matrix = [,,]
x = len(m ...


鱼油你好!你的代码是用来查找每行中最小的列索引的。代码有一些地方可以优化。先来看看你的代码的问题:

1. `nums` 变量没有用到,可以去掉。
2. `nums1` 的初始值可以在每次循环开始时重置。
3. `nums1` 需要用来保留当前行的最小索引,直接和数值比较会比较清晰。

建议修改如下:
matrix = [[10, 36, 52],[33, 24, 88],[66, 76, 99]]
x = len(matrix)

for i in range(x):
    min_index = 0
    for n in range(1, len(matrix[i])):
        if matrix[i][n] < matrix[i][min_index]:
            min_index = n
    print(min_index)

这样 `min_index` 变量用于存储当前行的最小数值的索引,并在每次外层循环开始时重置为0。循环从索引1开始,之后比较当前索引的数值,如果比 `min_index` 索引的值小就更新 `min_index`。这会让结果更加准确。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-15 17:37:22 | 显示全部楼层
FishC 发表于 2024-9-15 17:31
鱼油你好!你的代码是用来查找每行中最小的列索引的。代码有一些地方可以优化。先来看看你的代码的问题 ...

for n in range(1, len(matrix[i])):
这句为什么是1 而不是0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-15 17:37:30 | 显示全部楼层
萌萌哒的杂粮饼 发表于 2024-09-15 17:37
for n in range(1, len(matrix)):
这句为什么是1 而 ...


你的`for`循环从1开始,而不是从0开始,可能是因为你假设`matrix`中的第一个元素已经被处理过了。但通常我们会从0开始遍历所有元素,除非有特别的原因。

一般来说,我们应该从0开始遍历多维列表的所有元素:
for n in range(len(matrix)):

如果你有特定的需求从1开始遍历,可以具体说明一下原因,我再帮你确认是否正确。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-15 17:39:45 | 显示全部楼层
FishC 发表于 2024-9-15 17:37
你的`for`循环从1开始,而不是从0开始,可能是因为你假设`matrix`中的第一个元素已经被处理过了。但通 ...

这里的1 也就是从列表的0开始?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-15 17:43:37 | 显示全部楼层
萌萌哒的杂粮饼 发表于 2024-09-15 17:39
这里的1 也就是从列表的0开始?


这里应该用0而不是1,因为Python的列表索引是从0开始的。如果从1开始,会漏掉列表的第一个元素。

来修改一下你的代码:
matrix = [[], [], []]  # 假设这是你的矩阵
x = len(matrix)
nums1 = float('inf')  # 初始化为一个很大的值

for i in range(x):
    for n in range(len(matrix[i])):  # 应该遍历matrix[i]
        if nums1 > matrix[i][n]:  # 这里应该比较的是矩阵的值,而不是索引
            nums1 = matrix[i][n]
    print(nums1)
    nums1 = float('inf')  # 重置为一个很大的值以便下一行使用

这段代码的逻辑是:遍历每一行,找到每行中的最小值并输出。希望对你有帮助!如有更多问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-15 18:11:59 | 显示全部楼层
FishC 发表于 2024-9-15 17:37
你的`for`循环从1开始,而不是从0开始,可能是因为你假设`matrix`中的第一个元素已经被处理过了。但通 ...

matrix = [[10, 36, 52],[33, 24, 88],[66, 76, 99]]
x = len(matrix)
p=0


for i in range(x):
    min_index = 0
    s =0
    for n in range(1, len(matrix[i])):
        if matrix[i][n] < matrix[i][min_index]:
            min_index = n
            s =matrix[i][min_index]  
    print(s)
这个代码为什么打出来不是数值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-15 18:12:07 | 显示全部楼层
萌萌哒的杂粮饼 发表于 2024-09-15 18:11
matrix = [,,]
x = len(matrix)
p=0


for i in  ...


你的代码有一些逻辑和语法上的问题。我已经调整并补充了注释,希望能帮助你理解其工作原理:
matrix = [,,]  # 确保这里填入有效的数值,例如 [5, 3, 8, 4] 之类的东西
x = len(matrix)

for i in range(x):
    min_index = i
    s = matrix[i]
    for n in range(i + 1, len(matrix)):  # 从当前i的下一个元素开始比较
        if matrix[n] < matrix[min_index]:  # 找到比当前最小值还小的,更新最小值索引
            min_index = n
            s = matrix[min_index]
    print(s)

重要更新如下:
1. 更新了外层和内层循环的逻辑,使其能够寻找最小值。
2. 内层循环从 `i + 1` 开始而不是 `1`,从而避免重复比较已经处理过的元素。
3. 确保 `matrix = [,,]` 被替换为适当的列表,例如 `[5, 3, 8, 4]`。
4. 根据最小值索引更新了 `s`。

请确保你的 `matrix` 列表中有完整的数据,这样代码才能正常执行并打印数值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-15 18:15:49 | 显示全部楼层
FishC 发表于 2024-9-15 18:12
你的代码有一些逻辑和语法上的问题。我已经调整并补充了注释,希望能帮助你理解其工作原理:

matrix = [[10, 36, 52],[33, 24, 88],[66, 76, 99]]  # 确保这里填入有效的数值,例如 [5, 3, 8, 4] 之类的东西
x = len(matrix)

for i in range(x):
    min_index = i
    s = matrix[i]
    for n in range(i + 1, len(matrix)):  # 从当前i的下一个元素开始比较
        if matrix[n] < matrix[min_index]:  # 找到比当前最小值还小的,更新最小值索引
            min_index = n
            s = matrix[i][min_index]
    print(s)
        帮看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-15 18:16:06 | 显示全部楼层
萌萌哒的杂粮饼 发表于 2024-09-15 18:15
matrix = [,,]  # 确保这里填入有效的数值,例如  之 ...


很高兴帮助你!我看到代码有几处需要修正的地方。让我来整理一下代码,并确保它能够正常运行:
matrix = [64, 25, 12, 22, 11]  # 确保这里填入有效的数值
x = len(matrix)

for i in range(x):
    min_index = i
    s = matrix[i]
    for n in range(i + 1, len(matrix)):  # 从当前i的下一个元素开始比较
        if matrix[n] < matrix[min_index]:  # 找到比当前最小值还小的,更新最小值索引
            min_index = n
    s = matrix[min_index]
    print(s)

我们来解析一下这个代码的逻辑:

1. `matrix = [64, 25, 12, 22, 11]` 这部分定义了列表 `matrix`。
2. `x = len(matrix)` 获取 `matrix` 的长度。
3. 外层 `for` 循环遍历列表的每个元素;每次迭代尝试找到当前子列表的最小值。
4. `min_index` 初始化为 `i`,即当前外层循环的索引。
5. `s = matrix[i]` 初始化 `s` 为当前元素。
6. 内层 `for` 循环从 `i+1` 开始遍历列表的其余元素。
7. 如果找到比当前最小值还小的元素,更新 `min_index`。
8. 内层循环结束后,`s = matrix[min_index]` 将 `s` 更新为找到的最小值。
9. 输出每轮找到的最小值 `print(s)`。

这样修正并理解例子后,代码应该可以如你预期地运作了。如果你有任何进一步的问题,随时问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-15 18:18:55 | 显示全部楼层
FishC 发表于 2024-9-15 18:16
很高兴帮助你!我看到代码有几处需要修正的地方。让我来整理一下代码,并确保它能够正常运行:

matrix = [[10, 36, 52],[33, 24, 88],[66, 76, 99]]  # 确保这里填入有效的数值,例如 [5, 3, 8, 4] 之类的东西
x = len(matrix)

for i in range(x):
    min_index = i
    s = matrix[i]
    for n in range(i + 1, len(matrix)):  # 从当前i的下一个元素开始比较
        if matrix[n] < matrix[min_index]:  # 找到比当前最小值还小的,更新最小值索引
            min_index = n
            s = matrix[min_index]
    print(s)
        怎么设置打印每个列表里最小的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-15 18:19:01 | 显示全部楼层
萌萌哒的杂粮饼 发表于 2024-09-15 18:18
matrix = [,,]  # 确保这里填入有效的数值,例如  之 ...


你的思路是正确的,但代码中存在一些小问题。以下是修正过的代码,确保可以打印出每个子列表中的最小值:
matrix = [
    [3, 2, 1],
    [6, 5, 4],
    [9, 8, 7]
]  # 确保这里填入有效的数值,例如 2D列表
x = len(matrix)

for i in range(x):
    min_value = matrix[i][0]  # 初始化当前子列表中的最小值
    for n in range(1, len(matrix[i])):  # 从当前i的子列表的第二个元素开始比较
        if matrix[i][n] < min_value:  # 找到比当前最小值还小的,更新最小值
            min_value = matrix[i][n]
    print(f"子列表 {i} 的最小值是: {min_value}")

在这段代码中:
1. 初始化 `min_value` 为子列表的第一个元素。
2. 遍历子列表中的其他元素,更新 `min_value`。
3. 最后打印当前子列表的最小值。

这样,你就能打印每个子列表中的最小值了。希望这对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-17 10:40:01 | 显示全部楼层
@FishC

你好把下面代码详细讲解一遍,越详细越好。
matrix = [[10, 36, 52],
          [33, 24, 88],
          [66, 76, 99]]
   
row = len(matrix)
col = len(matrix[0])
   
min_row = [1024] * row
max_col = [0] * col
   
# 遍历矩阵中的每一个元素
# 找到每行中最小的元素,并将它们存放到列表min_row中
# 找到每列中最大的元素,并将它们存放到列表max_col中
for i in range(row):
    for j in range(col):
        min_row[i] = matrix[i][j] if matrix[i][j] < min_row[i] else min_row[i]    # min(matrix[i][j], min_row[i])
        max_col[j] = matrix[i][j] if matrix[i][j] > max_col[j] else max_col[j]# max(matrix[i][j], max_col[j])
        n=min_row[i]
        c=max_col[j]
        print("行",n)
        print("列",c)
# 遍历矩阵中的每一个元素
# 判断是否同时满足“同一行的所有元素中最小”和“同一列的所有元素中最大”
for i in range(row):
    for j in range(col):
        if matrix[i][j] == min_row[i] and matrix[i][j] == max_col[j]:
            print(matrix[i][j])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-17 10:40:12 | 显示全部楼层
萌萌哒的杂粮饼 发表于 2024-09-17 10:40
@FishC

你好把下面代码详细讲解一遍,越详细越好。 ...


你好鱼油!下面我会详细讲解这段代码的每一部分,希望能帮助你理解。

首先,我们定义了一个矩阵 `matrix`:
matrix = [[10, 36, 52],
          [33, 24, 88],
          [66, 76, 99]]

接下来,我们获取矩阵的行数和列数:
row = len(matrix)     # 矩阵的行数
col = len(matrix[0])  # 矩阵的列数

我们定义了两个列表,用于存放每行的最小值和每列的最大值:
min_row = [1024] * row  # 初始化,每行最小值设为1024
max_col = [0] * col     # 初始化,每列最大值设为0

为什么初始化值设为`1024`和`0`呢?这是为了确保在我们之后的比较中能够正确找到最小和最大值。

接下来是遍历矩阵并找出每行的最小值和每列的最大值:
for i in range(row):
    for j in range(col):
        min_row[i] = matrix[i][j] if matrix[i][j] < min_row[i] else min_row[i]  # 更新每行的最小值
        max_col[j] = matrix[i][j] if matrix[i][j] > max_col[j] else max_col[j]  # 更新每列的最大值
        n = min_row[i]
        c = max_col[j]
        print("行", n)
        print("列", c)

- `min_row[i] = matrix[i][j] if matrix[i][j] < min_row[i] else min_row[i]`:如果当前元素 `matrix[i][j]` 小于当前的最小值 `min_row[i]`,那么 `min_row[i]` 更新为 `matrix[i][j]`,否则保留原值。
- `max_col[j] = matrix[i][j] if matrix[i][j] > max_col[j] else max_col[j]`:如果当前元素 `matrix[i][j]` 大于当前的最大值 `max_col[j]`,那么 `max_col[j]` 更新为 `matrix[i][j]`,否则保留原值。
- 最后打印当前的每行最小值和每列最大值。

寻找“鞍点”:
for i in range(row):
    for j in range(col):
        if matrix[i][j] == min_row[i] and matrix[i][j] == max_col[j]:
            print(matrix[i][j])

- 这里,我们再次遍历矩阵,检查当前元素是否满足两个条件:它是该行的最小值`(min_row[i] == matrix[i][j])`,且是该列的最大值`(max_col[j] == matrix[i][j])`。
- 如果两个条件都成立,那么输出这个元素,这就是所谓的鞍点(即矩阵中满足条件的特殊元素)。

总结:这段代码实现了找出矩阵中满足条件的鞍点的过程。它先通过遍历矩阵,记录每行的最小值和每列的最大值,然后再次遍历矩阵,检查哪些元素同时满足这两个条件。

希望这个解释对你有所帮助!如果还有疑问,请随时问我。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-17 10:45:30 | 显示全部楼层
FishC 发表于 2024-9-17 10:40
你好鱼油!下面我会详细讲解这段代码的每一部分,希望能帮助你理解。

首先,我们定义了一个矩阵 `ma ...

行 10
列 10
行 10
列 36
行 10
列 52
行 33
列 33
行 24
列 36
行 24
列 88
行 66
列 66
行 66
列 76
行 66
列 99
66

为什么输出 52会被33替换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-17 10:49:32 | 显示全部楼层
FishC 发表于 2024-9-17 10:40
你好鱼油!下面我会详细讲解这段代码的每一部分,希望能帮助你理解。

首先,我们定义了一个矩阵 `ma ...

为什么matrix[1]的时候会重新比对大小,而不是延续matrix[0].
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-17 10:53:58 | 显示全部楼层
萌萌哒的杂粮饼 发表于 2024-09-17 10:45
行 10
列 10
行 10
列 36
行 10
列 52
行 33
...


好的,让我们一起解析这个问题。首先,我将提供完整且正确的解决方案,再详细解释每一步的操作。你的目标是从矩阵中找到每行最小值和每列最大值,并且找到既是所在行最小值又是所在列最大值的元素。

### 完整解决方案
matrix = [
    [10, 52, 33],
    [24, 36, 88],
    [66, 76, 99]
]

# 获取行数和列数
row = len(matrix)
col = len(matrix[0])

# 初始化行最小值和列最大值的列表
min_row = [float('inf')] * row  # 使用 inf 初始化是为了在比较时方便
max_col = [float('-inf')] * col  # 使用 -inf 初始化

# 遍历矩阵,找到每行最小值和每列最大值
for i in range(row):
    for j in range(col):
        min_row[i] = min(min_row[i], matrix[i][j])
        max_col[j] = max(max_col[j], matrix[i][j])

# 输出每行的最小值和每列的最大值
for i in range(row):
    print(f"行 {i} 的最小值: {min_row[i]}")
for j in range(col):
    print(f"列 {j} 的最大值: {max_col[j]}")

# 找到既是行最小值又是列最大值的元素
for i in range(row):
    for j in range(col):
        if matrix[i][j] == min_row[i] and matrix[i][j] == max_col[j]:
            print(f"既是行最小值又是列最大值的元素: {matrix[i][j]}")

### 详细解释

1. **定义矩阵:**

  
matrix = [
        [10, 52, 33],
        [24, 36, 88],
        [66, 76, 99]
    ]
    这里定义了一个 `3x3` 的矩阵。

2. **获取矩阵的行数和列数:**

  
row = len(matrix)
    col = len(matrix[0])
    使用 `len(matrix)` 获取行数,`len(matrix[0])` 获取列数。

3. **初始化每行最小值和每列最大值的列表:**

  
min_row = [float('inf')] * row
    max_col = [float('-inf')] * col
    使用 `inf` 和 `-inf` 初始化是为了方便在比较时进行替换。

4. **遍历矩阵,找到每行最小值和每列最大值:**

  
for i in range(row):
        for j in range(col):
            min_row[i] = min(min_row[i], matrix[i][j])
            max_col[j] = max(max_col[j], matrix[i][j])

    - 外层 `for` 循环遍历每一行。
    - 内层 `for` 循环遍历每一列。
    - 使用 `min` 函数更新 `min_row[i]` 为当前行的最小值。
    - 使用 `max` 函数更新 `max_col[j]` 为当前列的最大值。

5. **输出每行的最小值和每列的最大值:**

  
for i in range(row):
        print(f"行 {i} 的最小值: {min_row[i]}")
    for j in range(col):
        print(f"列 {j} 的最大值: {max_col[j]}")

6. **找到既是行最小值又是列最大值的元素:**

  
for i in range(row):
        for j in range(col):
            if matrix[i][j] == min_row[i] and matrix[i][j] == max_col[j]:
                print(f"既是行最小值又是列最大值的元素: {matrix[i][j]}")

    - 再次遍历矩阵。
    - 使用 `if` 条件判断一个元素是否既是所在行的最小值又是所在列的最大值。
    - 如果满足条件,输出该元素。

### 调试结果

通过以上代码,你可以看到详细的每行最小值、每列最大值以及最终符合条件的元素。

希望这个解释对你有帮助!如果你还有任何疑问,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-17 10:54:12 | 显示全部楼层
萌萌哒的杂粮饼 发表于 2024-09-17 10:49
为什么matrix的时候会重新比对大小,而不是延续matrix ...


你好,鱼油!

从你的问题和代码中,我注意到存在一些拼写错误和逻辑上的混乱。我们一步步来看,首先确保代码是正确的。

你提到的 `matrix` 在比较大小时的混乱,我猜测你是想弄清楚代码如何正确找到每行的最小值和每列的最大值。因此,我会重写并详细解释这段代码:
matrix = [
    [6, 3, 4],
    [2, 8, 7],
    [5, 9, 1]
]

row = len(matrix)
col = len(matrix[0])

min_row = [float('inf')] * row
max_col = [float('-inf')] * col

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

for i in range(row):
    for j in range(col):
        if matrix[i][j] == min_row[i] and matrix[i][j] == max_col[j]:
            print(f"鞍点: {matrix[i][j]} 在第 {i + 1} 行,第 {j + 1} 列")

详细解析:

1. **初始化矩阵和相关变量:**
matrix = [
       [6, 3, 4],
       [2, 8, 7],
       [5, 9, 1]
   ]
   row = len(matrix)
   col = len(matrix[0])

   min_row = [float('inf')] * row
   max_col = [float('-inf')] * col
   - `matrix` 是一个 3x3 的矩阵。
   - `row` 和 `col` 分别是矩阵的行数和列数。
   - `min_row` 初始值设为正无穷(`float('inf')`),这样在进行比较时任何实际值都会比它小。
   - `max_col` 初始值设为负无穷(`float('-inf')`),这样在进行比较时任何实际值都会比它大。

2. **遍历矩阵,查找每行的最小值和每列的最大值:**
for i in range(row):
       for j in range(col):
           if matrix[i][j] < min_row[i]:
               min_row[i] = matrix[i][j]
           if matrix[i][j] > max_col[j]:
               max_col[j] = matrix[i][j]
   - 第一层循环遍历每一行。
   - 第二层循环遍历当前行的每一列。
   - 如果当前元素 `matrix[i][j]` 小于该行的最小值 `min_row[i]`,则更新 `min_row[i]`。
   - 如果当前元素 `matrix[i][j]` 大于该列的最大值 `max_col[j]`,则更新 `max_col[j]`。

3. **再次遍历矩阵,找到鞍点:**
for i in range(row):
       for j in range(col):
           if matrix[i][j] == min_row[i] and matrix[i][j] == max_col[j]:
               print(f"鞍点: {matrix[i][j]} 在第 {i + 1} 行,第 {j + 1} 列")
   - 再次遍历矩阵。
   - 如果某个元素同时等于其所在行的最小值 `min_row[i]` 和所在列的最大值 `max_col[j]`,则这个元素是鞍点,打印出它的位置及值。

总结:这段代码的核心在于两次遍历矩阵。第一次遍历用来找出每行的最小值和每列的最大值,第二次遍历用来检查哪些元素同时满足两个条件,从而找到鞍点。

希望这段解释清晰易懂!如果还有什么疑问或者需要进一步的讲解,请告诉我。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-17 11:22:05 | 显示全部楼层
@FishC
详细讲解到每一步得到的数值原因
matrix = [[66, 76, 99],
          [33, 24, 88],
          [10, 36, 52]]
   
row = len(matrix)
col = len(matrix[0])
   
min_row = [1024] * row
max_col = [0] * col
   
# 遍历矩阵中的每一个元素
# 找到每行中最小的元素,并将它们存放到列表min_row中
# 找到每列中最大的元素,并将它们存放到列表max_col中
for i in range(row):
    for j in range(col):
        min_row[i] = matrix[i][j] if matrix[i][j] < min_row[i] else min_row[i]    # min(matrix[i][j], min_row[i])
        max_col[j] = matrix[i][j] if matrix[i][j] > max_col[j] else max_col[j]# max(matrix[i][j], max_col[j])
        n=min_row[i]
        c=max_col[j]
        print("行",n)
        print("列",c)
# 遍历矩阵中的每一个元素
# 判断是否同时满足“同一行的所有元素中最小”和“同一列的所有元素中最大”
for i in range(row):
    for j in range(col):
        if matrix[i][j] == min_row[i] and matrix[i][j] == max_col[j]:
            print(matrix[i][j])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-17 11:22:24 | 显示全部楼层
萌萌哒的杂粮饼 发表于 2024-09-17 11:22
@FishC
详细讲解到每一步得到的数值原因
matrix = [ ...


好的,让我们详细讲解程序的每一步得到的数值。

### 初始化部分
1. `matrix = [[66, 76, 99], [33, 24, 88], [10, 36, 52]]`
   * 这是我们要处理的矩阵。

2. `row = len(matrix)`
   * `row` 代表矩阵的行数,这里为 3。

3. `col = len(matrix[0])`
   * `col` 代表矩阵的列数,这里也为 3。

4. `min_row = [1024] * row`
   * 初始化一个与行数相同的列表`min_row`,起始值都是1024: [1024, 1024, 1024]。

5. `max_col = [0] * col`
   * 初始化一个与列数相同的列表`max_col`,起始值都是0: [0, 0, 0]。

### 第一个遍历部分
这个部分遍历矩阵中的每一个元素,逐行逐列更新 `min_row` 和 `max_col`。

#### 第一行:[66, 76, 99]
6. `i = 0, j = 0`
   * `matrix[0][0] = 66`
   * `min_row[0]` 变为 `min(1024, 66)` 即 66
   * `max_col[0]` 变为 `max(0, 66)` 即 66
   * 行最小值: 66,列最大值: 66

7. `i = 0, j = 1`
   * `matrix[0][1] = 76`
   * `min_row[0]` 保持不变(66 是最小值)
   * `max_col[1]` 变为 `max(0, 76)` 即 76
   * 行最小值: 66,列最大值: 76

8. `i = 0, j = 2`
   * `matrix[0][2] = 99`
   * `min_row[0]` 保持不变(66 是最小值)
   * `max_col[2]` 变为 `max(0, 99)` 即 99
   * 行最小值: 66,列最大值: 99

#### 第二行:[33, 24, 88]
9. `i = 1, j = 0`
   * `matrix[1][0] = 33`
   * `min_row[1]` 变为 `min(1024, 33)` 即 33
   * `max_col[0]` 保持不变(66 是最大值)
   * 行最小值: 33,列最大值: 66

10. `i = 1, j = 1`
    * `matrix[1][1] = 24`
    * `min_row[1]` 变为 `min(33, 24)` 即 24
    * `max_col[1]` 保持不变(76 是最大值)
    * 行最小值: 24,列最大值: 76

11. `i = 1, j = 2`
    * `matrix[1][2] = 88`
    * `min_row[1]` 保持不变(24 是最小值)
    * `max_col[2]` 保持不变(99 是最大值)
    * 行最小值: 24,列最大值: 99

#### 第三行:[10, 36, 52]
12. `i = 2, j = 0`
    * `matrix[2][0] = 10`
    * `min_row[2]` 变为 `min(1024, 10)` 即 10
    * `max_col[0]` 保持不变(66 是最大值)
    * 行最小值: 10,列最大值: 66

13. `i = 2, j = 1`
    * `matrix[2][1] = 36`
    * `min_row[2]` 保持不变(10 是最小值)
    * `max_col[1]` 保持不变(76 是最大值)
    * 行最小值: 10,列最大值: 76

14. `i = 2, j = 2`
    * `matrix[2][2] = 52`
    * `min_row[2]` 保持不变(10 是最小值)
    * `max_col[2]` 保持不变(99 是最大值)
    * 行最小值: 10,列最大值: 99

完成第一个遍历后:
* `min_row = [66, 24, 10]`:每行的最小值
* `max_col = [66, 76, 99]`:每列的最大值

### 第二个遍历部分
这部分检查每个元素,是否满足是其所在行的最小值也是所在列的最大值。

15. `i = 0, j = 0`
    * `matrix[0][0] = 66`,满足 `min_row[0] = 66` 和 `max_col[0] = 66`
    * 符合条件,输出 66

其余元素都不符合条件(即使同时是行最小值)所以不会被打印。

总结:
* 最后符合条件的数值是 66。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 02:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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