加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 12:00:03 所属栏目:Python 来源:网络整理
导读:例如: a = [[0.0,0.0,0.0],[0.0,1.2852976787772832,0.7965388321000092,6.409872844109646,0.17506688391255013,0.0]]print max(max(a))print max(a) 结果是: 1.28529767878 [0.0,0.0] 这显然是错误的,最大值应该是6.409872844109646. b = []for i in a:
例如:

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

结果是:

1.28529767878

[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]
#           ^ here's your tie-breaker

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读