gpt4 book ai didi

rust - 获取切片中最大或最小浮点值的索引或 Rust 中的 Vec 的惯用方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:51:13 24 4
gpt4 key购买 nike

假设 -- Vec<f32> 没有有任何NaN值或展示任何 NaN行为。

采用以下样本集:

0.28  
0.3102
0.9856
0.3679
0.3697
0.46
0.4311
0.9781
0.9891
0.5052
0.9173
0.932
0.8365
0.5822
0.9981
0.9977

获取上述列表中最高值(值可以为负)的 index 的最整洁、最稳定的方法是什么?

我最初的尝试是沿着以下几行:

let _tmp = *nets.iter().max_by(|i, j| i.partial_cmp(j).unwrap()).unwrap();    
let _i = nets.iter().position(|&element| element == _tmp).unwrap();

在哪里nets&Vec<f32> .在我看来,这显然是不正确的。

有效的 Python 等价物(考虑到上述假设):

_i = nets.index(max(nets))

最佳答案

为什么这不起作用?

>= Rust 1.62.0 (2022-06-30)

use std::cmp::Ordering;

fn example(nets: &Vec<f32>) {
let index_of_max: Option<usize> = nets
.iter()
.enumerate()
.max_by(|(_, a), (_, b)| a.total_cmp(b))
.map(|(index, _)| index);
}

<使用rust 1.62.0 (2022-06-30)

use std::cmp::Ordering;

fn example(nets: &Vec<f32>) {
let index_of_max: Option<usize> = nets
.iter()
.enumerate()
.max_by(|(_, a), (_, b)| a.partial_cmp(b).unwrap_or(Ordering::Equal))
.map(|(index, _)| index);
}

关于rust - 获取切片中最大或最小浮点值的索引或 Rust 中的 Vec 的惯用方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53903318/

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