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

perl6 – 如何在Perl 6列表中找到最大值的索引?

发布时间:2020-12-15 22:04:07 所属栏目:大数据 来源:网络整理
导读:在Perl 6列表中找到最大值很容易: my @list = 1,4,9,7,3; say @list.max;9 但是,如果我想找到最大条目的索引,似乎不是一个优雅的方法来做到这一点. say (^@list).sort({ -@list[$_] })[0];2 say @list.pairs.sort(*.value).tail.key;2 say @list.first(@lis
在Perl 6列表中找到最大值很容易:
> my @list = 1,4,9,7,3;
> say @list.max;
9

但是,如果我想找到最大条目的索引,似乎不是一个优雅的方法来做到这一点.

> say (^@list).sort({ -@list[$_] })[0];
2
> say @list.pairs.sort(*.value).tail.key;
2
> say @list.first(@list.max,:k);
2

那些都工作,但是他们几乎不优雅,更别提高效了.

有没有更好的方法来做到这一点?

如果max有:k,:v和:kv选项,比如首先有
当然,可能没有一个唯一的索引(例如,在(1,9)的最大值的情况下,但是再次可能没有一个唯一的值:

> dd (1,2.0,2.0e0,2).max;
2.0
> say <the quick brown fox>.max(*.chars);
quick

max已经检索到第一个最大值,所以返回带有:k(或:kv)的第一个索引是完全合理的.

解决方法

您可以使用
@list.maxpairs

获取所有索引和最大值的配对列表

@list.pairs.max(*.value).key

得到一个单一的索引.

就我所见,maxpairs和向max提供转换的能力仍然没有记录.

(编辑:李大同)

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

    推荐文章
      热点阅读