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

前端之家收集整理的这篇文章主要介绍了perl6 – 如何在Perl 6列表中找到最大值的索引?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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提供转换的能力仍然没有记录.

猜你在找的Perl相关文章