perl第三章 列表和数组
访问数组中的元素 $fred[0] $fred[1]
$number=2.75;
print $fred[$number-1] 结果就是print $fred[1]
特殊的数组索引1.对索引值超过数组尾端的元素进行赋值,数组将会根据需要自动扩大
2.对最后一个元素索引值 例如数组名围rocks 则最后一个索引值为 $#rocks
列表直接量
list literal (1,2,3)包含1,2,3,这三个数字的列表
(1..5)表示 1-5五个数字
($m,17)
qw简写 省略引号
qw(fred barney betty wilma dino) 列表
列表的赋值 ($fred,$barney,$dino)=("flintstone","rubble","undef");
当变量的个数多个给的哪个的列表值得个数,那么多出来的变量会被设置为undef
例子:($a[0],$a[1],$a[2])=qw/talc mica/;
引用整个数组 在数组名前加上@符号即可 后边不加索引值 例如@rack 代表所有的rack
可用于赋值操作 @rack=qw/bedrock slate lava/;
将一个数组中的列表复制到另一个数组 @copy=@quary
pop和push操作符 栈的操作 新增元素到数组尾端,存放到更高的索引值的新位置即可
pop用于去除数组中的最后一个元素;
例子: @array=5..9;
$f=pop(@array);#$f的值为9,而@array现在是(5,6,7,8);
也可取消掉括号 pop @array
push 用于添加一个元素或是一串元素 到数组的尾端
push(@array,0);最后一个元素是0
shift和unshift操作符
pop和push都是从数组右边开始弹出和压入
shift和ushift是从左边开始弹出和压入
@array=qw #dino fred barney#;
$m=shift(@array);
//$m值为dino array数组为(fred barney)
unshift(@array,5);@array现在是只有一个元素的列表(5)
splice操作符
push-pop和shift-unshift均是针对数组首位操作的。如果希望添加或移除数组中间的某些元素,需要用到splice操作符。
splice 目标数组,操作的开始位置,[3参],[4参];
例子:@array=qw(p d f b b);
@removed=splice @array,2;//@array=(p d);
//@removed=(f b b);
3参指定要操作的元素长度,代表要操作的元素个数,可以删除掉数组中间的一个片段;
@array=qw(p d f b a);
@removed=splice @array,1,2;
//@removed=qw(d f);@array=qw(p b a);
4参是要替换的列表 3参设为0 即可不删除地插入新列表;
@array=qw(p d f b a);
@removed=splice @array,1,0,qw(w);
// @removed变为qw() @array变为qw(p w d f b a);
字符串中的数组内插
例子: @rocks为列表数组
print “quartz @rocks limestone \n”;
注意邮件中的@符号 插入的是数组 而非@地址
$fred[3] 为数组 ;${fred}[3]为变量 $fred的值
foreach控制结构
例子:foreach $rock(qw/ b s l /)
{
print "one rock is $rock.\n";
}
在循环中修改了控制变量的值,也同时修改了这个列表元素本身
@rocks= qw/b s l/;
foreach $rock($rocks)
{ $rock="\t$rock";//在@rocks的每个元素前加上制表符
$rock.="\n";//同时在末尾加上换行符
}
print "the rocks are:\n",@rocks;各自占一行,并使用缩排
当循环结束后,控制变量的值仍然是循环执行之前的值,perl会自动保存foreach循环的控制变量并在循环结束之后还原,在循环执行期间,我们无法访问改变已经存储的值,所以当循环结束时,变量仍然保持循环前的值,如果它之前从未被赋值,那就仍然是undef;
$rock="shale";
@rocks=qw /bedrock slate lava/;
foreach $rock(@rocks){
..
}
print "rock is still $rock\n"; //结果为shale
perl最喜欢用的默认变量:$_
省略上例中的$rock 用perl默认的变量$_
foreach (1..10){
print "i can count to $_!\n";
}
例2:$_="fuck you";
print; //默认打印$_的值
reverse操作符
读取列表或数组的值,并安装相反的次序返回该列表。
例子:@fred=6..10;
@barney=reverse(@fred);#得到10,9,8,7,6
注意 reverse会返回次序相反的列表,但是他不会修改传进来的参数。
例:reverse @fred;#不会修改@fred的值
sort操作符
读取列表的值,会根据内部的字符编码顺序对他们进行排序。
按照字符在计算机内部表示的代码点排序。
例子:@rocks=qw/b s r g/;
@sorted=sort(@rocks);
#得到的结果为b g r s
注意数字当做字符串排序会和期望值有出入
each操作符
对数组调用each会返回数组中下一个元素对应的两个值 该元素的索引以及该元素的值
例子1:use 5.012;#perl版本
my @rocks=qw /b s r g /;
while(my($index,$value)=each @rocks ){
say "$index:$value";
}
例子2:根据索引从小到大一次遍历,借助索引值取得元素的值:
@rocks=qw/b s r g /;
foreach $index(0..$#rocks){
print "$index:$rocks[$index]\n";
}
例子1,2实现的功能相同
******标量上下文与列表上下文*****非常重要
本节非常重要 同一个表达式出现在不同的地方会有不同的意义。
perl期望得到什么,那就是该表达式的上下文
perl第三章 列表和数组的更多相关文章
- perl5 第四章 列表和数组变量
第四章 列表和数组变量 by flamephoenix 一.列表二.数组--列表的存贮 1.数组的存取 2.字符串中的方括号和变量替换 3.列表范围 4.数组的输出 5.列表/数组的长度 ...
- Perl 学习笔记-列表和数组
笔记来自<<Perl语言入门第5版>> 1. Perl中列表指标量的有序集合,数组则是存储列表的变量, 这两个术语经常混用,不过更精确地说,列表指数据,而数组指变量.数组的表示 ...
- <<C++ Primer>> 第三章 字符串, 向量和数组 术语表
术语表 第 3 章 字符串, 向量和数组 begin: 是 string 和 vector 的成员,返回指向第一个元素的迭代器.也是一个标准库函数,输入一个数字,返回指向该数字首元素的指针. 缓 ...
- perl语言入门总结-第3章-列表与数组
1-列表list指的是标题的有序集合, 而数组(array)则是存储列表的变量. 更精确地说,列表指的是数据,而数组指的是变量. 访问数组中的元素 ] = "yabba"; ] = ...
- 中级Perl 第三章课后习题
3. 10. 1. 练习1 [25 分钟] 读当前目录的文件列表并转换成全路径.不能用shell 命令或外部程序读当前目 录.Perl 的File::Spec 和Cwd 两个模块对这个程序有帮助.每个 ...
- Python:从入门到实践--第三章--列表简介--练习
#1.将一些朋友的姓名存储在一个列表中,并将其命名为friends.依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来. #2.继续使用1中的列表,为每人打印一条消息,每条消息包含相同的问候语 ...
- javascript 数据结构和算法读书笔记 > 第三章 列表
1. 结构分析 列表首先要有以下几个属性: listSize 长度 pos 当前位置 dataStore 数据 我们要通过以下方法对上面三个属性进行操作: length() 获取长度 | getPos ...
- perl学习之五:列表和数组
列表及其形式 数组 数组的赋值 数组的读取 数组片段 数组函数 二维数组简介 总结 1.列表形式: 1.(item1,item2,...) 2.qw(item1 item2 item3 ...) 3. ...
- python基础(三)列表、数组、字典
列表与元组 列表是最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 1 >>> names = ['wangeq','zlx','jack','rose ...
随机推荐
- Junit-@Annotation-动态代理-类加载器
一.测试单元 概述:用于测试JAVA代码的工具类,已内置在Eclipse中; 格式: 1.在方法的上面添加@Test; 2.对被测试的方法的要求:权限- ...
- SQL必知必会-笔记
一.数据库/数据表 数据库(DATABASE):存储有组织的数据的容器; 数据库管理系统(DBMS):数据库软件.开发者通过 DBMS 操纵 DATABASE 表(TABLE):表是一种结构化的文件, ...
- Jenkins任务失败,发送邮件通知
1.进入系统管理->系统设置,然后进行下面设置: 2.配置管理员邮件账号,需要和后面的邮件发送者一致.否则可能会发送不成功 3.配置基础的邮件发送的配置 4.配置邮件扩展配置--用来自定义邮件格 ...
- windows下安装pm2
安装pm2 npm install pm2 -g 添加系统环境变量 PM2_HOME=C:\Users\PCONE\.pm2 打开新的cmd命令行窗口,执行以下命令来安装服务 pm2-service- ...
- python爬虫之路——初识爬虫三大库,requests,lxml,beautiful.
三大库:requests,lxml,beautifulSoup. Request库作用:请求网站获取网页数据. get()的基本使用方法 #导入库 import requests #向网站发送请求,获 ...
- UVA 1471 Defense Lines 防线 (LIS变形)
给一个长度为n的序列,要求删除一个连续子序列,使剩下的序列有一个长度最大的连续递增子序列. 最简单的想法是枚举起点j和终点i,然后数一数,分别向前或向后能延伸的最长长度,记为g(i)和f(i).可以先 ...
- 在DataGridView控件中显示图片
实现效果: 知识运用: DataGridView控件的DataSource属性 实现代码: private void Form1_Load(object sender, EventArgs e) { ...
- python_99_面向对象多态
#多态:一种接口,多种实现.主要作用:实现接口重用 #方法1: class Animal(object): def __init__(self,name): self.name=name class ...
- Ubuntu 下安装WPS
1.先到wps官网上下载wps的deb包. http://www.wps.cn/product/ 2.我使用的64位的,所以得安装32位兼容包 sudo apt-get install ia32-li ...
- SCOPE_IDENTITY和@@IDENTITY[转]
本文转自:http://www.cnblogs.com/daydayupanan/archive/2008/09/04/1283648.html SCOPE_IDENTITY和@@IDENTITY的作 ...