当前位置:  开发笔记 > 编程语言 > 正文

在perl中以相反的顺序打印数组元素

如何解决《在perl中以相反的顺序打印数组元素》经验,为你挑选了1个好方法。

我试图以相反的顺序打印数组的元素,从最后一个元素开始到第0个元素,当我不知道列表计数时,不使用反向函数.这是输入和输出.

#!/usr/bin/perl/
use warnings;
use strict;

@months = (January, February, March, April, May, June, July, August);
print @months[-6 .. 0];
print @months[-1 .. 0];

它给我的输出是

MarchAprilMayJuneJulyAugustJanuary
AugustJanuary

但我想要的是,它应该打印出来

AugustJulyJuneMayAprilMarchFebruaryJanuary

谁能请帮忙.我是一名perl初学者.



1> ikegami..:
@months[-6 .. 0], @months[-1 .. 0]

要么

@months[-6 .. 0, -1 .. 0]

手段

@months[-6, -5, -4, -3, -2, -1, 0, -1, 0]

但是你想要

@months[-1, -2, -3, -4, -5, -6, -7, -8]

或者干脆

@months[7, 6, 5, 4, 3, 2, 1, 0]

明显的解决方案是

reverse(@months)

其他有效的表达方式:

@months[ map { -$_ } 1..@months ]

@months[ map { $#months-$_ } 0..$#months ]

map { $months[-$_] } 1..@months

map { $months[ $#months-$_ ] } 0..$#months

use feature qw( current_sub );
sub { @_ ? pop(@_), __SUB__->(@_) : () }->(@months)

do { my @reversed; for my $month (@months) { unshift(@reversed, $month) } @reversed }

就地解决方案:

for (0..@months/2-1) {
   ($month[$_], $month[-$_-1]) = ($month[-$_-1], $month[$_]);
}

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有