加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中,如何迭代数组的多个元素?

发布时间:2020-12-15 21:58:29 所属栏目:大数据 来源:网络整理
导读:我有一个CSV文件,我使用拆分解析成N个项目的数组,其中N是3的倍数. 有没有办法可以做到这一点 foreach my ( $a,$b,$c ) ( @d ) {} 类似于Python? 解决方法 您可以使用 List::MoreUtils::natatime.从文档: my @x = ('a' .. 'g');my $it = natatime 3,@x;whil
我有一个CSV文件,我使用拆分解析成N个项目的数组,其中N是3的倍数.

有没有办法可以做到这一点

foreach my ( $a,$b,$c ) ( @d ) {}

类似于Python?

解决方法

您可以使用 List::MoreUtils::natatime.从文档:
my @x = ('a' .. 'g');
my $it = natatime 3,@x;
while (my @vals = $it->()) {
    print "@valsn";
}

natatime在XS中实现,因此您应该更喜欢它以提高效率.仅用于说明目的,以下是如何在Perl中实现三元素迭代器生成器:

#!/usr/bin/perl

use strict; use warnings;

my @v = ('a' .. 'z' );

my $it = make_3it(@v);

while ( my @tuple = $it->() ) {
    print "@tuplen";
}

sub make_3it {
    my ($arr) = @_;
    {
        my $lower = 0;
        return sub {
            return unless $lower < @$arr;
            my $upper = $lower + 2;
            @$arr > $upper or $upper = $#$arr;
            my @ret = @$arr[$lower .. $upper];
            $lower = $upper + 1;
            return @ret;
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读