相关疑难解决方法(0)

使用Perl的两个数组的差异

我有两个数组.我需要检查并查看其中一个元素是否出现在另一个元素中.

有没有比嵌套循环更有效的方法呢?我每个都有几千个元素,需要经常运行程序.

arrays perl

34
推荐指数
5
解决办法
7万
查看次数

如何比较Perl中的数组?

我有两个数组,@a@b.我想在两个数组的元素之间进行比较.

my @a = qw"abc def efg ghy klm ghn";
my @b = qw"def ghy jgk lom com klm";
Run Code Online (Sandbox Code Playgroud)

如果任何元素匹配,则设置一个标志.有没有简单的方法来做到这一点?

arrays perl

7
推荐指数
3
解决办法
5万
查看次数

如何在Perl中找到一个数组中的元素而不是另一个数组中的元素?

我有两个数组,我想找到一个数组但不是另一个数组的元素:

例如:

@array1 = ("abc", "cde", "fgh", "ijk", "lmn")
@array2 = ("abc", "fgh", "lmn")
Run Code Online (Sandbox Code Playgroud)

我需要最终得到:

@array3 = ("cde", "ijk")
Run Code Online (Sandbox Code Playgroud)

arrays perl

7
推荐指数
3
解决办法
3529
查看次数

循环遍历两个数组,删除perl中的重叠

我有两组范围,由[start,stop]值表示.一些范围重叠,这意味着一个范围的开始位于另一个范围的[开始,停止]之间.我想制作一组没有这种重叠的新范围,并且不包括范围内的任何新值.

范围看起来像这样:

@starts  @ends
      5    108 
      5    187
     44    187
     44    229 
     44    236 
     64    236 
    104    236
    580    644
    632    770
Run Code Online (Sandbox Code Playgroud)

我期望的输出是这样的:

@starts  @ends
      5    236
    580    770
Run Code Online (Sandbox Code Playgroud)

这是因为前七个范围与5 => 236的间隔重叠,后两个与632 => 770的间隔重叠.

这是我试过的代码:

$fix = 0;
foreach (@ends) {  
    if ($starts[$fix + 1] < $ends[$fix]) {
        splice(@ends, $fix, $fix);
        splice(@starts, $fix + 1, $fix + 1);
    } else {
        $fix += 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以自己打印出这些值,我只需要帮助合并算法.

arrays algorithm perl merge intervals

5
推荐指数
1
解决办法
1111
查看次数

如何在Perl中找到两个数组的不区分大小写的唯一元素?

我有三个阵列.

  • @ array1包含文件名
  • @ array2包含文件名
  • @unique我想要包含唯一的项目

我使用以下代码比较两个数组并输出包含唯一文件名的第三个数组.

@test{@array1} = ();
@unqiue = grep {!exists $test{$_}} @array2;
Run Code Online (Sandbox Code Playgroud)

但是输出区分大小写,如何将其更改为不区分大小写?

谢谢


嗨,对不起,我想我没有问过我的问题!

我保留了一个包含我已经播放过的曲目的旧轨道数组,然后我想要一个新的轨道数组.我想将新曲目与旧曲目阵列进行比较,以确保我只获得唯一可供选择的曲目.

所以目前的输出是;

Unique Tracks:
\my Music\Corrupt Souls\b-corrupt.mp3
\My Music\gta4\10 - Vagabond.mp3
\My Music\gta4\14 - War Is Necessary.mp3
\My Music\Back To Black\05 Back to Black.mp3

我需要的是结果只返回轨道10,14和05,因为第一个轨道,b-corrupt,已经在旧轨道阵列中,只是情况不同.

在此先感谢您的帮助


#!/usr/bin/perl
$element = '\\My Music\\Corrupt Souls\\b-corrupt.mp3';
push (@oldtrackarray, $element);

$element = '\\My Music\\Back To Black\\03 Me and Mr Jones.mp3';
push (@oldtrackarray, $element);

$element = '\\My Music\\Jazz\\Classic Jazz-Funk Vol1\\11 - Till You Take My Love [Original …

arrays perl grep

1
推荐指数
2
解决办法
1571
查看次数

标签 统计

arrays ×5

perl ×5

algorithm ×1

grep ×1

intervals ×1

merge ×1