在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
选项,如例如,那将是很好的first
.当然,也有可能不会是一个独特的指数(例如,在的情况下(1,4,9,7,9).max
,但话又说回来,有可能不是一个独特的价值之一:
> dd (1, 2.0, 2.0e0, 2).max; 2.0 > say.max(*.chars); quick
max
已经检索到第一个最大值,因此用(或)返回第一个索引是完全合理的.:k
:kv
您可以使用
@list.maxpairs
获得所有索引和最大值对的列表或
@list.pairs.max(*.value).key
获得一个索引.
据我所知maxpairs
,提供转换的能力max
仍然没有记录.