文章目录

  • 一、数组与列表介绍
  • 二、数组中元素的访问——下标数字
  • 三、数组特殊索引——$#数组名、负数索引
  • 四、列表操作——字符$"、qw简写、范围操作..
  • 五、列表赋值——一一对应

一、数组与列表介绍

   列表(list)指的是标量的有序集合,而数组(array)则是存储列表的变量。在Perl里,这两个术语常常混用,不过更明确地说,列表指的是数据,而数组指的是变量。
  数组或列表中的元素都是单独的标量变量,都有相应的整数作为索引,从0开始递增,每次加1.所以数组和列表中的头一个元素总是第0个元素。
  因为每个元素都是独立不相关的标量值,所以列表或数组中可能包含数字、字符串、undef值或不同标量值的混合
  数组和列表的定义使用@(at)符号。在Perl中不能直接声明一个具体深度的数组或列表,声明列表时用括号( ),这一点区别于C语言。

二、数组中元素的访问——下标数字

  同C语言一样,Perl中也用下标数字来引用数组元素。数组中的元素以连续的整数来编号,从0开始,之后每个元素加1。但又有所不同:

  • 数组中元素的下标可以是能得到数字的表达式,也可以是小数,无论正负,perl编译时会自动舍弃小数
  • 数组元素下标超出范围,则对应的值将会是undef
  • 数组(列表)的打印最好加双引号“ ”,打印结果:元素会空格开

代码示例:

#!/usr/bin/perl
$fred[0] = "刘备";
$fred[1] = "张飞";
$fred[2] = "关羽";                 #定义数组array——不加括号,即@fred#声明数组@array = 5..9;@fr = ("刘备","张飞","关羽");      #定义列表list——(),即@fr#数组元素的访问——下标
print $fred[0];       ###刘备
print "\n";
print "$fred[1]\n";   ###张飞print @fr;            ###刘备张飞关羽——列表打印
print "\n";
print @fred;          ###刘备张飞关羽——数组打印
print "\n";#打印列表和数组使用——加双引号
print "@fr\n";        ###刘备 张飞 关羽
print "@fred\n";      ###刘备 张飞 关羽

编译运行:

刘备
张飞
刘备张飞关羽
刘备张飞关羽
刘备 张飞 关羽      ###好的打印结果
刘备 张飞 关羽

三、数组特殊索引——$#数组名、负数索引

  在Perl中,如果对索引值超过数组尾端的元素进行赋值,数组将会根据需要自动扩大——只要有可用的内存分配即可。 如果在数组扩展过程中需要创建增补元素,那么他们的默认值是undef

  1. 数组最后一个元素的索引值是“$#数组名”,见示例。这个数字比数组元素的个数少1,因为还有一个编号为0的元素。
  2. 数组元素的索引还可以采用:从数组尾端往回计数的“负数数值索引值”,如此,数组最后一个元素的索引值是“-1”。

代码示例:

#!/usr/bin/perl
$rocks[0] = 'bed';
$rocks[1] = 'coach';
$rocks[2] = 'horse';
$rocks[5] = 'rock';
$rocks[9] = 'shock';       #扩展数组$" = ",";
print "@rocks\n";print $rocks[$#rocks];    ###shock
print "\n";
print $#rocks;            ###$数组名——数组最大下标值9
print "\n";$end = $#rocks;           #最大下标值
$number_of_rocks = $end + 1;  #数组元素数量
print $rocks[-1];         ###打印最后一个元素值shock
print "\n";
print $rocks[-10];        ###打印第一个值bed
print "\n";

编译运行:

bed,coach,horse,,,rock,,,,shock        #默认值为undef
shock
9
shock
bed

四、列表操作——字符$"、qw简写、范围操作…

  列表的定义同数组一样,也会用到@符号。而列表元素的声明,可由圆括号内用逗号隔开的一串数据表示。实际打印结果不含有任何符号,见上述代码示例。关于列表的用法:

  1. $"符号:使打印出的列表元素通过不同的符号间隔开
  2. 范围操作符:从数字左边计数到右侧,每次加1,产生连续的一串数字。
  3. qw简写:建立简单的单词列表时,省去许多无谓的引号,且逗号分隔符也可以省略。使用qw简写时,定界符种类不限。

代码示例:

#!/usr/bin/perl
# $"符号的使用方式——符号种类不限
@grades = (99,100,87,86,70);
print "@grades\n";     #列表输出方式——99 100 87 86 70$" = ",";
print "@grades\n";     #逗号分割输出——99,100,87,86,70   $" = ": ";
print "@grades\n";     #冒号分割输出——99: 100: 87: 86: 70#qw简写——定界符种类不限
@a = ("fred",'barney',"wine",'liquor');
print "@a\n";
@a = qw(fred,barney,wine,liquor);
print "@a\n";
@a = qw!fred,barney,wine,liquor!;
print "@a\n";
@a = qw/fred,barney,wine,liquor/;   #任意配对符号都可以使用
print "@a\n";        #打印结果相同@a = qw{/usr/bin/word/home/root/.ispell_english
} ;
print "@a\n";#范围操作符..——运用
$" = ", ";
@a = ("fred",3.5,100);    #列表中可以有字符串,数字,数组
print "@a\n";
@a = (10..20);              #范围操作符..,只可从小到大,只支持整数
print "@a\n";
@a = (0..3,5,7..9);
print "@a\n";
@a = (0..$#rocks);
print "@a\n";

编译运行:

99 100 87 86 70
99,100,87,86,70
99: 100: 87: 86: 70
fred,barney,wine,liquor
fred,barney,wine,liquor
fred,barney,wine,liquor
fred,barney,wine,liquor
/usr/bin/word, /home/root/.ispell_english
fred,3.5,100
10,11,12,13,14,15,16,17,18,19,20
0,1,2,3,5,7,8,9
0,1,2,3,4,5,6,7,8,9

五、列表赋值——一一对应

  类似标量值可以被赋值给变量一样,列表值也可以被赋值给变量,且遵循一一对应的关系。注意,列表中的元素可以包含数字、字符串、数组、undef等

代码示例:

#!/usr/bin/perl#列表中的变量赋值
($a,$b,$c) = ('fish','cat','dog');
print "$c\n";        #列表赋值一一对应($bet[0],$ebt[1],$bet[2]) = qw(fish,cat,dog);
@bet = qw(fish,cat,dog);
print "@bet\n";#列表中包含其他类型变量
@rocks = qw(bed,fish,cat);
@tiny = ();                     #空列表
@giant = (1..5);
$dan = 'hot';
@stuff = (@rocks,undef,@tiny,@giant,"add",$dan);  #11个元素,空列表不计
$" = ",";
print "@stuff\n";#数组到数组的赋值
@copy = @stuff;
print "复制组copy:@copy\n";

编译运行:

dog
fish,cat,dog
bed,fish,cat,,1,2,3,4,5,add,hot
复制组copy:bed,fish,cat,,1,2,3,4,5,add,hot

(三)Perl_列表与数组(元素访问、特殊索引$#、qw简写、列表赋值等)相关推荐

  1. python返回列表中特定元素对应的索引

    在使用列表这一数据结构进行数据分析时,我们会经常遇到需要返回列表中特定元素对应的所有索引的情况.我们可能会首先想到可以使用index函数返回元素索引,看一下效果: a = [1, 2, 3, 4, 2 ...

  2. python列表中的元素可以是不同类型_Python列表中所有元素必须为相同类型的数据。...

    [判断题]定义Python函数时,如果函数中没有return语句,则默认返回空值None. (3.5分) [判断题]函数中必须包含return语句. (3.5分) [单选题]对于序列 s,哪个选项能够 ...

  3. python中将列表中的元素倒序输出_python实现对列表中的元素进行倒序打印

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. 在列表中增加元素的三种方法

    在列表中增加元素 在列表中增加元素的方法有很多种,如下: (1)通过append方法可以向列表中添加元素 (2)通过extend方法可以将另一个列表中的元素逐一添加到列表中 (3)通过insert( ...

  5. python ndarray append_9-Python-NumPy数组元素的添加与删除

    数组元素的添加与删除 相关函数列表如下: 函数 元素及描述 resize 返回指定形状的新数组 append 将值添加到数组末尾 insert 沿指定轴将值插入到指定下标之前 delete 删掉某个轴 ...

  6. python删除列表一段元素_Python基础--list列表删除元素

    列表中删除元素主要分为以下 3 种场景: 根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法: 根据元素本身的值进行删除,可使用列表(list类型)提供的 remove ...

  7. 如何通过索引从列表中删除元素?

    如何在Python中按索引从列表中删除元素? 我找到了list.remove方法,但是说我想删除最后一个元素,该怎么做? 似乎默认的remove搜索列表,但是我不希望执行任何搜索. #1楼 pop还可 ...

  8. 指针 二维数组元素引用

    二维数组元素指针引用 1.定义 2.数组指针和指针数组的区别 1.二维数组可以理解为是一个一维数组,不过每个数组元素又是一个一维数组 int a[2][3]={{1,2,3},{4,5,6}}; 可以 ...

  9. java怎么把把数组元素倒置_java数组元素倒置

    package dataStructure; import java.util.Arrays; import java.util.ArrayList; public class Test1 { sta ...

  10. python列表批量删除元素_Python基础--list列表删除元素

    列表中删除元素主要分为以下 3 种场景: 根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法: 根据元素本身的值进行删除,可使用列表(list类型)提供的 remove ...

最新文章

  1. 【神经网络】(14) MnasNet 代码复现,网络解析,附Tensorflow完整代码
  2. NLPCC:预训练在小米的推理优化落地
  3. 阿里云资深专家李国强:云原生的一些趋势和新方向
  4. JavaScript数据结构与算法——数组详解(上)
  5. 织梦检测环境不支持mysql_本地测试织梦dedeCMS 安装环境
  6. 关于hkcmd.exe造成的和Eclipse之间热键冲突
  7. 现代计算机模型要求程序在执行,大学计算机基础考试考点.doc
  8. 计算机操作员五级知识点,计算机操作员五级.doc
  9. caj文件浏览器_知网上PDF文件下载的问题怎么解决?
  10. sem_wait sem_post信号量操作进本函数
  11. CKEditor快速介绍与入门示例
  12. Tensorflow(r1.4)API--tf.nn.conv2d详解
  13. openstack nova后端使用ceph rbd(增加在线迁移live_migrate和快照snapshot功能)
  14. NFS在Centos 6.3下的安装
  15. chrome最新版本下载
  16. 斑图的matlab程序,斑图生成
  17. JDK1.8后List转Map
  18. Android Intent简介
  19. 数学系列 (二)自然数、分数、小数、算数、代数
  20. [Python|Clothoid]Clothoid曲线(回旋曲线)与直角坐标求解的python实现

热门文章

  1. 程序员前辈归纳整理Python中的控制流语句的知识点(要记得收藏)
  2. V语言04语句表达式
  3. Java之4种引用简析
  4. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.7 时间模型...
  5. spring bean实现init/destory生命周期方法的三种方式
  6. 非线性回归-Polynomial regression
  7. iOS -- 使用蒲公英进行内测
  8. 笔记代码(各种算法实现)
  9. rviz进行kitti数据集可视化时加载小车模型报错
  10. 西门子P L C 1200与smart的S 7通讯