鱼C论坛

 找回密码
 立即注册
查看: 2535|回复: 7

[已解决]课后作业23,动手题,帮忙看看哪里出问题了(小白,望详解)

[复制链接]
发表于 2021-7-10 11:10:57 | 显示全部楼层 |阅读模式
20鱼币
说明:假设给定一个 m * n 的矩阵,如果某一个元素的值在同一行的所有元素中最小,并且在同一列的所有元素中最大,那么该元素便是幸运数字。

我的思路:先找同一行中最小的数,并找出其列数 "a[i]",后用此数和它的列数比较同一列中每个数,判断其是否为最大的数。若是,添加到空列表b中,最后打印b。

s = [[10, 36, 52],
     [33, 24, 88],
     [66, 76, 99]]
a = [0]*3
minx = [0]*3

for i in range(3):
    for j in range(2):
        if s[i][j] <= s[i][j+1]:
            minx[i] = s[i][j]
            a[i] = j
        if s[i][j] > s[i][j+1]:
            minx[i] = s[i][j+1]
            a[i] = j+1

b = []
for i in range(3):
    j = 0
    count = 0
    while j < 3:
        if minx[i] >= s[j][a[i]]:
            j += 1
            count +=1
        if count ==3:
            b.append(minx[i])
print(b)
最佳答案
2021-7-10 11:10:58
s = [[10, 36, 52],
     [33, 24, 88],
     [66, 76, 99]]

s1 = list(zip(*s))

for m in range(len(s)):
    for n in range(len(s[m])):
        if min(s[m]) == max(s1[n]):
            print(s[m][n])

最佳答案

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

使用道具 举报

发表于 2021-7-10 11:10:58 | 显示全部楼层    本楼为最佳答案   
s = [[10, 36, 52],
     [33, 24, 88],
     [66, 76, 99]]

s1 = list(zip(*s))

for m in range(len(s)):
    for n in range(len(s[m])):
        if min(s[m]) == max(s1[n]):
            print(s[m][n])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-10 11:59:58 | 显示全部楼层

zip 是什么函数

也帮忙看看我的代码怎么错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-10 16:07:27 | 显示全部楼层
飞花落尽 发表于 2021-7-10 11:59
zip 是什么函数

也帮忙看看我的代码怎么错了

zip: 将两个可迭代对象一对一打包, 多的截断

如:
a = [1, 2, 3]
b = [4, 5, 6]
print(zip(a, b))
得到:
[(1, 4), (2, 5), (3, 6)]

如:
a = [1, 2, 3, 4]
b = [4, 5, 6]
print(zip(a, b))

和上面结果一样, 因为长的被截断了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-10 17:00:52 | 显示全部楼层
学渣李某人 发表于 2021-7-10 16:07
zip: 将两个可迭代对象一对一打包, 多的截断

如:

那这个又list 又zip而且还有*号的是什么意思
s1 = list(zip(*s))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-10 17:36:31 | 显示全部楼层
飞花落尽 发表于 2021-7-10 17:00
那这个又list 又zip而且还有*号的是什么意思
s1 = list(zip(*s))

*是解包
如:
a = [1, 2, 3, 4, 5]
print(*a)
得到:
1, 2, 3, 4, 5

也就是把列表中所有元素都拿了出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-10 18:31:05 | 显示全部楼层

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

使用道具 举报

发表于 2021-7-11 10:44:15 | 显示全部楼层
了解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-14 19:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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