gpt4 book ai didi

perl - 如何计算两个数组中每个元素之间的差异?

转载 作者:行者123 更新时间:2023-12-02 00:27:08 25 4
gpt4 key购买 nike

我有一个文本文件,其中包含我按如下方式分组的数字,并用空行分隔:

42.034 41.630 40.158 26.823 26.366 25.289 23.949

34.712 35.133 35.185 35.577 28.463 28.412 30.831

33.490 33.839 32.059 32.072 33.425 33.349 34.709

12.596 13.332 12.810 13.329 13.329 13.569 11.418

注意:组的长度始终相等,并且可以排列为多于一行,如果组很大,例如 500 个数字长。我正在考虑将组放入数组中并沿着文件的长度进行迭代。

我的第一个问题是:我应该如何从数组 1 中减去数组 2 的第一个元素,从数组 2 中减去数组 3,类似地减去第二个元素,依此类推,直到组的末尾?

即:

34.712-42.034,35.133-41.630,35.185-40.158 ...till the end of each group

33.490-34.712,33.839-35.133 ..................

然后保存一组中第一个元素的差异(第二个问题:如何?)直到最后

即:

34.712-42.034 ; 33.490-34.712 ; and so on in one group

35.133-41.630 ; 33.839-35.133 ; ........

我是初学者,所以任何建议都会有帮助。

最佳答案

假设您已打开文件,以下是一个快速草图

use List::MoreUtils qw<pairwise>;
...

my @list1 = split ' ', <$file_handle>;
my @list2 = split ' ', <$file_handle>;

my @diff = pairwise { $a - $b } @list1, @list2;

pairwise是最简单的方法。

否则还有旧的备用:

# construct a list using each index in @list1 ( 0..$#list1 )
# consisting of the difference at each slot.
my @diff = map { $list1[$_] - $list2[$_] } 0..$#list1;

关于perl - 如何计算两个数组中每个元素之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156089/

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