Perl语言入门--4--列表
1、列表也是数组的形式:(1,'a',2,3,4)
元素可以是任意类型,变量,表达式
2、空列表:()
单元素列表:(2) 。与值2不同
qw(1 $a str) #qw是用空格作为分隔符,元素中不能有空格,否则视为两个元素,()可变为<>
3、范围运算符:..
4、数组:列表的存储
形式:@a=(1,2,3)
与$a是不同的变量
@a的初始值是空 :()
元素形式: $a[0] #注意是$ 美元符号
负索引:倒数第一是-1 $a[-1]
5、数组的赋值:
@a=(1,2,3,4)
@a=(1,2,3,4),@a=@b
@b=(2,3),@a=(1,@b,4)
@b='a' x 4; @b=('a','a','a','a')
@b = <>; 从标准输入(键盘)读出一行赋予元素,最后用 ctrl+d结束输入
元素操作:
改变元素的值:$a[1] = 3 ; @a=(1,3,3,4)
对超出数组大小的元素赋值: $a[5]=6 ; @a=(1,2,3,4,"",6) 数组自动增长,原来没有的元素值为NULL
读不存在的元素为空: $x = $a[7] ;
6、数组的读取
单个元素的读取: $a=$a[1]
多个元素的读取:
每个元素对应到变量: @a=(1,2,3) ;($x,$y,$z)=@a; - ->$x=1 $y=2 $z=3
多余的变量为空:($x,$y,$z,$zz)=@a; - ->$x=1 $y=2 $z=3 $zz=""
一些用法:
$a =@a; #这样$a的值是@a的长度
($a) =@a; #这样$a的值是@a的第一个元素
$a=(1,2,3) #把一个列表直接赋值给变量 则$a =最右面的元素 也就是3
$#a :它的值是元素的最后一个元素的索引。加1即为长度。但对其赋值就改变了数组的长度
数组的输出:
print @a 中间没空格
print "@a" 中间有空格
7、数组片段:访问数组的部分元素,而不是全部元素
用法:
@a =(1,2,3,4,5)
读出:@sub = @a [0,1,3] @sub=(1,2,4)
赋值:@a[1,3]=('a','b') ; @a =(1,'a',3,'b',5)
范围:
@sub = @a[1..3] 则 @sub=(2,3,4)
$x = 1,$y=3;@sub=@a[$x..$y]; 则 @sub=(2,3,4) #这样指代也可以
列表:
@b=(1,2,3); @sub = @a[@b]; 则@sub=(2,3,4)
@b=(2,3); @sub=@a[1,@b]; 则 @sub=(2,3,4)
($a,@b,$c)=(1,2,3,4,5); 则@b=(2,3,4,5) ,$c=""
数组元素的重叠:
交换:@a[1,2]=@[2,1] @a=(2,1,3,4,5)
重叠:@a[1,2,3]=@a[3,2,4] @a=(1,4,3,5,5)
8、数组操作函数
@a = (1,12,4,8,20)
1、sort {代码块}(数组):
不要代码块时:print sort(@a); #(1,12,20,,4,8)
怎么实现大小的排序呢:print sort {$a<=>$b}(@a); #这是默认方式,记住就好 (1,4,8,12,20)
2、reverse @a: 数组的反序
3、chop @a :数组的每一个元素都截取最后一个字符
4、shift (@a) :删除数组第一个元素,返回删除的元素。如直接输出shift(),则对@ARGV数组使用
5、unshift(@a,$a):在数组开头增加元素,返回新数组长度
6、push(@a,$a):在数组末尾增加元素
7、pop(@a) : 在数组末尾删除元素
8、join('连接符',@a)把数组连接成一个字符串
@a=('a','b'); join('_',@a); - -> 'a_b'
join('_','a','b'); - -> 'a_b'
9、split(/模式/,分割串,长度)
模式:缺省为空格,可省略
分割串:缺省为$_,可省略
长度:分割成几个元素,可省略,则全部分割
$s='a,b,c'; @a=split(/,/,$s); @a=('a','b','c') #以逗号为分割符进行切割
@a=split(/,/,$s,2); @a= ( 'a' , 'b,c' ) #指定数组的长度为2,只有@a[0] 和@a[1]
10、wantarray():当期望返回数组时为真,返回简单变量时为假
先定义一个子函数:sub mysub() {print wantarray() ? "数组\t" : "变量\n" ;}
然后在用:@a=mysub;
$a=mysub; #第一个输出数组 第二个输出变量
11、splice:
@a=splice(@a,skip,length,@newlist)
对@a操作,跳过skip个元素,然后开始用@newlist替换length个元素。@newlist和length可以不等长,无论@newlist多长,它只占用(或者说替换)length长的元素位置
#当length=0时为插入。splice(@a,-1,0,@n) #在末尾追加
#当@newlist为空则为删除
#当@newlist和length都省略时,其后的全部删除。split(@a,3);
12、正则表达式在数组中的用法
@found=grep(/patten/,@search) 对 @search的每一个元素进行搜索,匹配的元素返回到@found数组中
13、map
map(expr,@list ); 对每一个元素进行expr(你指定让他干啥他干啥) ,返回运算后的数组。元素用$_代表。
举个栗子:
map($_+1,(1,2)) - ->(2,3)
14、二维数组
$aoa=[[1,2,3,]],['a','b','c'] #至于为什么美元符 记住就好
内含两个子数组 (1,2,3) ('a','b','c')
子数组访问:@{$aoa -> 0} #至于为什么这样访问 记住就好 @开头 紧接着用大括号{}圈起来
子数组元素访问:@{$aoa -> 0}[0,1]
元素访问 : $aoa ->[0][0]
有一维数组构成二维数组:
@a=(1,2,3)
@b=('a','b','c')
$aoa=[[@a],[@b]];
Perl语言入门--4--列表的更多相关文章
- Perl语言入门: 斜线不是元字符,所以在不作为分隔符时不需要加上反斜线。
Perl语言入门: 斜线不是元字符,所以在不作为分隔符时不需要加上反斜线.
- Perl语言入门14-17
---------第十四章 字符串与排序------------------- index查找子字符串 my $stuff = "howdy world!"; my $where ...
- Perl语言入门
Perl 是 Practical Extraction and Report Language 的缩写,可翻译为 "实用报表提取语言". Perl语法基础: (1)Perl程序由声 ...
- perl语言入门总结-第3章-列表与数组
1-列表list指的是标题的有序集合, 而数组(array)则是存储列表的变量. 更精确地说,列表指的是数据,而数组指的是变量. 访问数组中的元素 ] = "yabba"; ] = ...
- Perl语言入门(中文版)(第6版) 东南大学出版社
第一章简介 问题与答案 这本书适合你吗? 为何有这么多的脚注? 关于习题和解答? 习题前标的数字是什么意思? 如果我是Perl讲师? “Perl”这个词表示什么意思? Larry为什么要创造Perl? ...
- Perl 语言入门6-9
---- 第6章 哈希----------- 简介 键值对.键和值都是任意标量,但键总是会被转换成字符串. 键唯一,值可重复. 应用场景:一组数据对应到另一组数据时. 如找出重复/唯一/交叉引用/查表 ...
- Perl语言入门--1--perl的包安装
A. 手工安装 从CPAN下载了DBI模块1.13版的压缩文件DBI-1.13.tar.gz.假设放在/usr/local/src(一般需要编译安装的软件,都放在此目录下安装). # cd /usr ...
- Perl语言入门10-13
----------第十章 其他控制结构---------------- unless结构 unless($fred =~ /\A[A-Z_\w*\z]/i){print "yes" ...
- Perl 语言入门1-5
第一章 简介 perl -v 文字处理,编写小型CGI脚本(Web服务器调用程序)的最佳语言 CPAN: Perl综合典藏网 shebang: #! /usr/bin/perl 或#! /usr/lo ...
- Perl语言入门--3--文件读取与写入
现有文件test.txt,内容为:"123\n456" 1,打开文本test.txt #!/usr/bin/perl open d,"test.txt"; d ...
随机推荐
- LeetCode之Weekly Contest 101
前一段时间比较忙,而且做这个对于我来说挺耗时间的,已经间隔了几期的没做总结了,后面有机会补齐.而且本来做这个的目的就是为了防止长时间不做把编程拉下,不在追求独立作出所有题了.以后完赛后稍微尝试下,做不 ...
- python入门:输出1-10的所有数(自写)
#!/usr/bin/env python # -*- coding:utf-8 -*- #输出1-10的所有数(自写) """ 导入time库,给kaishi赋值为数字 ...
- Python基础——赋值机制
使用id()函数用于获取对象的内存地址. 使用is来判断是不是指向同一个内存. 把一个对象赋值给另一个对象,两个对象都指向同一个内存地址. test=1000 test1=test id(test) ...
- matplotlib学习记录 一
from matplotlib import pyplot as plt # 先实例一个图片,传入图片参数,10宽,5高,分辨率为80 image = plt.figure(figsize=(10,5 ...
- machine_desc
每一个machine,都要定义一个自己的machine_desc结构,该结构定义了该machine的一些最基本的特性. struct machine_desc { unsigned int nr; / ...
- static 的三个作用
1).用于声明函数体内的变量为静态局部变量,存储在静态数据存储区,在函数被调用过程中维持其值保持不变 2).在文件内(函数体外)被声明为静态的变量,可以被文件内的所有函数访问,但不能被其他文件的函数访 ...
- poj 3614 伪素数问题
题意:1.p不是素数 2.(a^p)%p=a 输出yes 不满足输出no 思路: 判断素数问题,直接暴力判断 bool is_prime(int n) { for(int i=2;i*i<= ...
- 《Scrum实战》第2次课【取得大家的支持】课后作业汇总
作业:<变革之心>读后感 孟帅: 2017-7-12http://www.cnblogs.com/mengshuai1982/p/7153985.html
- luogu1208 尼克的任务
倒着推就是了 #include <iostream> #include <cstdio> #include <vector> using namespace std ...
- [解读REST] 0.REST 相关参考资料
Web之父 Tim Berners Lee :https://en.wikipedia.org/wiki/Tim_Berners-Lee 世界上诞生的第一个网站:http://info.cern.ch ...