擅长:python、mysql、java
<p>你的机器太多了。既然我不能理解你的代码,我就从头开始工作。我还将假设您的“4元组”只是4个元素的数组引用,因为这就是它们需要的全部。在</p>
<pre><code>use List::Util 'sum';
my @tuples = generate_a_bunch_of_random_tuples();
# Zip each tuple with its sum
my @tuples_with_sums = map { [ $_, sum(@$_) ] } @tuples;
my @sorted_with_sums = reverse sort { $a->[1] <=> $b->[1] } @tuples_with_sums;
my @sorted = map { $_->[0] } @sorted_with_sums;
</code></pre>
<p>事实上,在<a href="https://en.wikipedia.org/wiki/Schwartzian_transform" rel="nofollow">Schwartzian transform</a>的实例中,可以将整个过程作为单个语句来完成:</p>
^{pr2}$
<p>但为了便于理解,我把它写了很久。在</p>
<p>“zip”(可以从<a href="http://metacpan.org/pod/List::MoreUtils" rel="nofollow">List::MoreUtils</a>获得)只有在已经有多个并行列表的情况下才真正有用。如果输出列表的每个元素都依赖于单个输入列表中的一个元素,<code>map</code>也能正常工作——事实上,效果更好。在</p>