曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3693|回复: 0
打印 上一主题 下一主题

列表与数组的异同,列表直接量

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2011-9-21 12:08:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
列表 (list) 是标量的有序集合,而数组(array)则是存储列表的变量。

列表指的是数据,数组指的是变量。列表的值不一定要放在数组里,但每个数组变量都一定包含一个列表,即使该列表可能为空。

数组或列表中的每个元素都是单独的标量变量,拥有独立的标量值,而且这些值是有序的,也就是说,从其实元素到终止元素的先后次序是固定的。数组或列表中的每个元素都有一个整数作为其索引,且索引号从 0 开始,依次递增 1 。

由于每个元素都是独立不相关的标量值,所以列表或数组里可能包含数字,字符串,undef 值或不同类型变量值的混合。但一般来说,保持所有元素具有相同的类型是一种常见的做法。

列表和数组中可以没有任何元素,也可以包含任意多个元素,多到可以将可用内存全部塞满。

列表直接量是圆括号中用逗号隔开的一系列值,这些值构成了列表中的元素。下面的程序演示了多种填写直接量到列表中的情况:
[code=perl]#!/usr/bin/perl

$m = 11;
$n = 17;

@myarr = (1, 2, 3);

@myarr2 = ("groad", 7, 9);

@myarr3 = (1..10);

@myarr4 = (1.9..5.8);   #会自动变为整数

@myarr5 = (1, 2, 3, 4..8, 10);

@myarr6 = (10..3);      #空列表,只能向上增长

@myarr7 = ($m..$n);     #变量也可以

@myarr8 = (0..$#myarr); #注意这里的 $#myarr 的值是2,它是数组的索引

@myarr9 = ($n-$m..$n-8);

foreach (@myarr) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr2) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr3) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr4) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr5) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr6) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr7) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr8) {
        print "$_ ";
}
print "\n-----------------\n";

foreach (@myarr9) {
        print "$_ ";
}
print "\n-----------------\n";[/mw_shl_code]
运行输出:
./list.pl
1 2 3
-----------------
groad 7 9
-----------------
1 2 3 4 5 6 7 8 9 10
-----------------
1 2 3 4 5
-----------------
1 2 3 4 5 6 7 8 10
-----------------

-----------------
11 12 13 14 15 16 17
-----------------
0 1 2
-----------------
6 7 8 9
-----------------
程序中,数组名前加一个 '@' 符号表示对整个数组的引用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 20:30 , Processed in 0.076040 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表