首页 > 其他分享 >列表与数组

列表与数组

时间:2023-08-19 22:33:10浏览次数:39  
标签:.. 元素 rocks 数组 列表 fred

目录
列表指的是标量的有序集合,而数组则是存储列表的变量

数组

  1. 假如你对索引值超过数组尾端的元素进行赋值,数组将会根据需要自动扩大——只要有可用的内存分配给Perl,数组的长度是没有上限的。如果在扩展过程中需要创建增补元素,那么它们的默认取值为undef:
$rocks[0] = 'bedrock';             #一个元素
$rocks[1] = 'slate';               #又一个
$rocks[2] = 'lava';                #再来一个
$rocks[3] = 'crushed rock';        #再来一个
$rocks[99] = 'schist';             #现在有95个undef元素
  1. 数组的最后一个元素的索引值是$#name,这个数字比数组元素的个数少1,因为还有一个编号为0的元素:
    • $rocks[$#rocks] = 'hard rock';
    • $rocks[-1] = 'hard rock';
      假如你在数组中有3个元素,则有效的负数索引值为-1(最后一个元素)、-2(中间的元素)、-3(第一个元素)。实践中,似乎没有人会使用-1以外的负数索引值

列表

  1. 列表直接量,可以由圆括号内用逗号隔开的一串数据表示,而这些数据就称为列表元素。例如:
    - (1,2,3)             #包含1,2,3这三个数字的列表
    - (1,2,3,)            #末尾的逗号会被忽略
    - ("fred",4.5)        #两个元素,“fred"和4.5
    - ( )                 #空列表,0个元素
    - (1..100)            #100个整数构成的列表

..范围操作符

上例最后一行用到了..范围操作符,该操作符会从左边的数字计数到右边,每次加1,以产生一连串的数字。
(1..5)        #与(1,2,3,4,5)相同
(1.7..5.7)   #同上,但这两个数字都会被去掉小数部分
(5..1)    #空列表,..只能向上计数
(0,2..6,10,12)    
($m..$n)    #范围由$m和$n当前的值来决定

qw简写

("fred","barney","betty","wilma","dino");
《 == 》qw( fred barney betty wilma dino );
两种写法等价

  1. qw表示"quoted word(加上引号的单词)"或"quated by whitespace(用空白圈引)"
  2. Perl会将其当成单引号内的字符串来处理(所以,在qw构建的列表中,不能像双引号内的字符串一样使用\n或$fred)。
  3. 除了以一对圆括号作为界定符,Perl还允许用任何标点符号作为界定符

列表的赋值

  1. 就像标量值可被赋值给变量一样,列表值也可被赋值给变量:
    ($fred,$barney,$dino) = ("flintstone","rubble","undef");
    左侧列表中的三个变量会依次被赋予右侧列表中对应的值,相当于分别做了三次独立的赋值操作。
  2. Perl中互换两个变量的值
    • ($fred,$barney) = ($barney,$fred);
    • ($betty[0],$betty[1]) = ($betty[1],$betty[0]);

@字符

  1. 构建一个字符串数组
($rocks[0],$rocks[1],$rocks[2],$rocks[3]) = qw/talc mica feldspar quartz/;
当你希望引用整个数组时,Perl提供了一个简单的记法。之哟啊在数组名之前加上@字符(后面没有检索用的方括号)就可以了。这种写法在赋值操作符的两边都可以使用:
@rocks = qw/ bedrock slate lava /;
@tiny = ( );       #空列表,由于空列表里没有任何元素,也就不会有undef被赋值到列表中
@giant = 1..1e5;  #包含100 000个元素的列表
@stuff = (@giant,undef,@giant); #包含200 001个元素的列表
@dino = "granite";
@quarry = (@rocks,"crushed rock",@tiny,$dino);
最后一行进行的赋值运算会将@quarry设成拥有5个元素的列表(bedrocl、slate、lava、crushed rock、granite)
  1. 数组名会被展开成(它所拥有的)元素列表,因为数组只能包含标量,不能包含其他数组,所以数组无法成为列表中的元素
  2. 要留意的是:将某个数组复制到另一个数组时,仍然算是列表的赋值运算,只不过这些列表是存储在数组里而已
    @copy = @quarry; #将一个数组中的列表复制到另一个数组

pop和push操作符

  1. pop操作符负责取出数组中最后一个元素并将其作为返回值返回
    • @array = 5..9;
    • $fred = pop(@array);
    • $barney = pop @array;
    • pop(@array);
      pop后面加不加括号都可以。Perl惯例:只要不会因为拿掉括号而改变原意,括号就是可以省略的
  2. push操作符
    • push(@array,0);
    • push @array,8;
    • push @array,1..10;
  3. push的第一个参数或者pop的唯一参数都必须是要操作的数组变量——对列表直接量进行压入(push)或弹出(pop)操作是没有意义的

shift和unshift

标签:..,元素,rocks,数组,列表,fred
From: https://www.cnblogs.com/ningqian/p/17642887.html

相关文章

  • 数组
    数组我们可以使用数组来保存同一个数据类型的多个数据数组的特点1.数组的长度一旦确定就不能改变 1.一个数组中元素的数据类型都是一样的数组的初始化动态初始化格式数据类型[]数组名=new数据类型[长度];例如:int[]array=newint[10];//动态初始化一个长度为10的数组,数组......
  • python列表添加元素
    列表添加元素df_test=pd.DataFrame({'a':[1,2],'b':[3,None]})df_test.columns+'c'#每个元素拼接'c'!不能直接添加元素!['a','b']+['c']#不能每个元素拼接,也不能直接加字符串,需要列表+列表进行扩展,且append输出为None#np.array不......
  • pandas生成表格: 字典键值列表需对齐,而二维表格无此要求 键值需至少有一个为列表,否
    生成表格:字典键值列表需对齐,而二维表格无此要求键值需至少有一个为列表,否则需指定index,否则ValueErrordf_test=pd.DataFrame({'a':[1,2],'b':[3,None]})#生成表格:#字典键值列表需对齐,而二维表格无此要求#键值需至少有一个为列表,否则需指定index,否则ValueError:If......
  • 监听form的改变,刷新列表数据
    computed:{_searchForm(){returnJSON.parse(JSON.stringify(this.searchForm))}},watch:{_searchForm:{handler:function(newVal,oldVal){if(newVal.pageNum!==1&&newVal.pageNum===oldVal.pageNum){this.searchForm.p......
  • 「AWOI Round 2 C」数组操作?数组操作!
    「AWOIRound2C」数组操作?数组操作!洛谷题目描述给定两个长度为\(n\)的数组\(a,b\),将它们合并得到一个长度为\(2\timesn\)的数组\(c\)。设\(a\)数组第\(i\)个元素合并后位于\(c\)数组第\(lb_i\)个位置,\(b\)数组第\(i\)个元素合并后位于\(c\)数组第\(......
  • 线段树与树状数组
    $$\texttt{线段树}$$OI-wikiLink线段树是一种用于维护区间信息的数据结构,可以在\(O(\logn)\)的复杂度下求出一个大小为\(n\)的数组的区间信息(如区间和、区间最大值等),也可以在同样时间复杂度下实现单点修改和区间修改等操作。基本结构:......
  • 代码随想录算法训练营第六天|242.有效的字母异位词 349. 两个数组的交集 202. 快乐数
     哈希表部分:哈希表,简单来说就是k-v形式查询的结构,用来快速判断一个元素是否出现集合里,如hashmap核心是哈希函数,k存哈希函数的值,找的时候找查询项的哈希函数值就行,返回v 出现哈希碰撞的时候,查找的流程怎么走呢?(*存疑,之后查一下) 类型:数组+集合set(set、multiset、unordered......
  • JavaScript中的析构对象,析构数组与展开运算符
    前言这些是JavaScript中重要的编程思想,这些析构对象,析构函数与展开运算符很重要这块内容不怎么难,纯属一些语法,但是在所谓的函数式编程,以及React中却是广泛使用的逆向思维,之前是怎么构造,而现在让你如何展开,获取里面的内容!!逆向思维,之前是怎么构造,而现在让你如何展开,获取里面的内......
  • 总结python 元组和列表的区别
    python的基本类型中有元组和列表这么俩个,但是这哥俩却比较难于区分,今天就来用简单的实例说明两者的不同。列表:1.使用中括号([])包裹,元素值和个数可变实例:aaa=['sitename','www','pythontab','com']元组:1.使用中括号(())包裹,不可以被更改(尽管他们的内容可以)bbb=['sitename','www','py......
  • 常用数组方法
    1.push()末尾添加数据2.pop()末尾出删除数据3.unshift()头部添加数据4.shift()头部删除数据5.reverse()翻转数组6.sort()排序7.splice() 截取数组8.concat()合并数组9.join()数组转字符串10.slice()截取数组的一部分数据11.indexOf从左检查数组中有没有这个数值12.lastInde......