gpt4 book ai didi

python 为什么 max(max(float_2d_array)) 给出错误的答案?

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:56 27 4
gpt4 key购买 nike

例如:

a = [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 1.2852976787772832, 0.7965388321000092, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 6.409872844109646, 0.17506688391255013, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
print max(max(a))
print max(a)

结果是:

1.28529767878

[0.0, 0.0, 1.2852976787772832, 0.7965388321000092, 0.0, 0.0, 0.0, 0.0, 0.0]

这显然是错误的,最大值应该是 6.409872844109646。

b = []
for i in a:
b.extend(i)
print max(b)

6.40987284411

这是 python 2.7,Cpython。

非常感谢。

最佳答案

列表按元素排序。由于 1.2852976787772832 的索引在候选子列表中比 6.409872844109646 的索引领先一位,因此包含前者的列表被选为最大值。

在第二个列表的相同索引中,我们有一个 0 并且 1.2852976787772832 显然大于 0:

[0.0, 0.0, 1.2852976787772832, 0.7965388321000092, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 6.409872844109646, 0.17506688391255013, 0.0, 0.0, 0.0, 0.0]
# ^ here's your tie-breaker

事实上,永远不会检查下一个包含 6.4... 的索引。

我不确定您希望如何选择最大子列表:具有最大总和的子列表,包含最大数量的子列表?如果默认行为没有削减它,您将必须编写您想要的行为。

关于python 为什么 max(max(float_2d_array)) 给出错误的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43782855/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com