美文网首页
列表和数组

列表和数组

作者: 食梦狸猫 | 来源:发表于2019-03-22 15:55 被阅读0次

Perl里的列表和数组用于表示复数。列表是指有序集合,数组是存储列表的变量。数组和列表里每个元素都是独立互不相关的标量值。

  1. 在Perl中,数组的名字空间和标量的名字空间是完全分开的。

  2. 假如下标超出了,对应的值是undef。

  3. 如果对超过数组尾端的元素进行赋值,数组会自动扩大,增补元素默认为undef。只要有足够的内存的话,数组的长度是没有上限的。

  4. 数组最后一个元素的索引值是$#rocks。

列表直接量

列表是圆括号内包含一串由逗号隔开的数据。

(1,2,3..100) #1到100

qw简写

在Perl程序里,经常需要建立简单的单词列表,这时就需要使用qw简写,qw定界符也可以不同

qw(
      fred
      barney
      betty
      wilma
      dino
)

列表的赋值

列表值也可以赋予给变量
fred,dino)= ("rubble",undef);
在赋值过程中。如果变量的个数不等于给定的列表值个数,那么多出来的值会被忽略。而如果变量的个数多于给定的列表值个数,那么多出来的变量会被设置为undef。
例子

($FRED) = qw<rubble slate>;

若想引用整个数组,可以在数组名前加上@字符,这表示全部的,所有的。

@rocks = qw/ bedrock slate lava /;

pop和push操作符

Perl中常把数组当作堆栈来使用。pop推出,push推入。

shift和unshift操作符

shift和unshift处理的是数组的首部,shift是取出,unshift是放入。

splice操作符

splice是针对数组中间元素进行操作的,返回被切出的片段。它有4个参数,后两个是可选的:要操作的目标数组,要操作的元素的开始位置,操作的元素长度(设为0就是插入列表),替换列表(不一定和取走的片段一样长)

@array = qw(pebbles dino fred barney );
@removed = splice @array,1,2,qw(wilma);

字符串中的数组内插

数组的内容同样是可以被内插到双引号中的。

@rocks = qw{ slate rubble};
print "quartz @rocks \n";

foreach控制结构

foreach $value (qw / bed slate /){
    ...
}

如果在foreach循环开头省略控制变量,那么Perl就会用它自己的默认变量$_。

foreach(1..10)
{
  print" i can count $_";
}

reverse操作符

读取列表的值然后按照相反的次序返回该列表。

sort操作符

读取列表或者数组的值,然后进行排序。
如果要对数组进行排序,必须把排序后的结果存回数组

each操作符

对数组调用each,会返回数组中下一个元素所对应的索引和该元素的值。这是5.12版开始后的,在这之前each只能处理哈希键值对。

use 5.012;
@rock = qw/ bedrock slate /;
while( ($index,$value) = each @rock )
{
    say "$index : $value";
}

标量上下文和列表上下文

当Perl在解析表达式时,我们要么希望它返回一个标量,要么希望它返回一个列表。
例如

@people = qw( fred barney betty);
@list = @people; #得到3个人的列表
$n = @people; #得到数字3

强制指定标量上下文用scalar
**<STDIN>在标量上下文中会返回输入数据的下一行,在列表上下文中会返回所有剩下的行,直到文件结尾 **

相关文章

  • 列表和数组

    Perl里的列表和数组用于表示复数。列表是指有序集合,数组是存储列表的变量。数组和列表里每个元素都是独立互不相关的...

  • scala中的模式匹配

    一、常量、类型匹配 二、 数组列表和元组匹配 1. 数组 2. 元组 3. 列表

  • 3.1数组的声明和初始化

    3.1一维数组的声明和初始化 声明一维数组结构: 数据类型[] 数组名列表 数据类型数组名列表[] -- 该语句只...

  • Elixir-集合

    列表、元组、关键字列表(keywords)、图(maps)、字典和函数组合子(combinators) 目录 列表...

  • 1.2 Numpy-创建数组 np.arange() lins

    ‘列表’和‘数组’的区别在中间的 ‘,’ [1,2,3,4,5,6] :列表 [1 2 3 4 5 6] :数组 ...

  • python中的列表与数组转换

    将列表转换成数组或者数组转换成列表,操作如下(使用函数array 和 tolist): from numpy im...

  • python语法(四)

    列表 names = ["zhangsan","Lisi","Wangwu"]和C语言的数组不同,数组必须定义数据...

  • Perl-2-列表与数组

    一、简介 列表:标量的有序集合 数组:储存列表的变量区别:列表指的是数据,数组指的是变量,列表的值不一定要放在数组...

  • shell数组和关联数组

    数组和关联数组 数组和关联数组 1 数组1.1 在单行中使用数值列表来定义一个数组:1.2 打印出特定索引的数组元...

  • 我是这样学习Python列表的!

    列表 不同于 C++ 和 Java,在 Python 中,没有在标准库中内置数组类型,而是通常利用列表来表示数组,...

网友评论

      本文标题:列表和数组

      本文链接:https://www.haomeiwen.com/subject/bxnlvqtx.html