Logo
Section 1 / 11

数组及其操作

让我们学习如何访问数组的内容,并了解如何使用内置方法。

导入

数组及其操作

让我们学习如何访问数组的内容,并了解如何使用内置方法。

正如我们之前讨论的(参见变量与数据类型),数组类似于一组值的列表。最简单的数组形式是通过整数索引进行编号,从索引 0 开始。

注意: 在处理数组时,为了调试代码,查看键及其对应的值非常重要。在许多情况下,获取数组长度也非常有用。

输出数组的结构化视图

要以可读格式打印数组,可以使用以下语句:

1print "@arrayName";

该语句会将数组内容用空格分隔后输出。运行下面的代码,看看 print 如何作用于数组。

1@fruits = ('Grapes', 'Apple', 'Banana'); 2 3print "@fruits";

.. 操作符

.. 操作符用于表示一个范围,用来初始化数组。例如,“1 .. 8” 范围会将数值从 1 到 8 填入数组。下面是一个使用 .. 操作符的代码示例:

1@integers = (0 .. 9); # 输出 0 到 9 2@alphabets = (A .. Z); # 输出 A 到 Z(大写字母) 3 4print "@integers\n"; 5print "@alphabets";

pop 和 push 子程序

Perl 中的数组可用于实现栈结构。数组的末尾充当栈顶,push 和 pop 操作分别用于向栈中添加和移除元素。

push 子程序接受两个参数: 1)数组名称。 2)要压入的元素。

pop 子程序仅接受一个参数,即数组名称。

下面我们通过代码来探索这两个操作:

1@alphabets = (A .. F); 2 3print "Original: @alphabets \n"; 4push (@alphabets, 'G'); # 将 G 添加到数组的最后一个位置 5 6print "Pushing G in the array: @alphabets\n"; 7 8pop (@alphabets); # 移除数组的最后一个元素 9 10print "Removing last element from array: @alphabets\n"; 11pop (@alphabets); # 再次移除最后一个元素 12 13print "Removing last element from array: @alphabets\n\n";

shift 和 unshift 子程序

shift 和 unshift 子程序也可用于实现栈的行为,但它们以数组的起始位置作为栈顶。

shift 子程序以数组名称作为参数,移除数组的第一个元素。

unshift 子程序在数组开头添加一个新元素,它接受两个参数: 1)数组名称。 2)要添加的元素。

下面我们通过代码来探索这两个操作:

1@alphabets = (a .. f); 2 3print "Original: @alphabets \n"; 4shift (@alphabets); # 移除数组的第一个元素 5 6print "Removing first element from an array: @alphabets\n"; 7 8unshift (@alphabets, 'a'); # 在数组开头添加元素 9 10print "Adding first element to an array: @alphabets";

数组长度

数组中元素的总数称为数组长度。这个长度是动态的,会随时间变化。使用 scalar 函数可以获取数组长度,它接收数组名称作为参数。下面的代码展示了其用法:

1@fruits = ("Orange", "Grapefruit", "Lemon"); # 初始化数组 2print "Length of fruits array is " . scalar(@fruits);

访问指定索引处的元素

我们经常需要访问数组中特定索引位置的元素。在 Perl 中,$arr[3] 用于访问名为 arr 的数组中索引为 3 的元素。此外,$#arr 表示数组 arr 当前的最大索引。下面是一个示例:

1@fruits = ("Orange", "Grapefruit", "Lemon"); # 初始化数组 2print "Maximum index of fruits array is " . $#fruits . "\n"; 3 4print $fruits[1]; # 访问 fruits 数组的第二个元素

字符串

挑战 1:寻找最大值