ruby学习笔记之数组学习(一)

转载 2013年12月02日 14:42:16
数组:方括号之之间放一组元素,索引从零开始。如果这个位置上没有对象,则返回nil表示空。
使用负整数访问数组,则从数组末端开始计数。
一、数组定义
a = [3.14159,"pai",99]
puts a.class
puts a.length
puts a[0]
输出:
Array
3
3.14159

b=Array.new
puts b.class
puts b.length
b[0]="aab"
b[1]="abb"
puts b.length
输出:
Array
0
2

c=[1,3,5,7,9]
puts c[-1]
puts c[-2]
print "c[-99]:#{c[-99]}\n"
输出:
9
7
c[-99]:

(2)Array.new 生成一个空的新数组
Array.new(size) 生成size个obj对象组成的新数组 [nil,nil,...]
Array.new(5,'A')创建给定大小的数组['A','A','A','A','A']

(3)[]=设置数组中的元素,若有间隙用nil来填充
c=[1,3,5,7,9]
c[6]=66
print "c:#{c}\n" 
输出:c:[1, 3, 5, 7, 9, nil, 66]

(4)选取元素组成新数组
a=%w{a b c d e f}
p a.values_at(1,3,5)
输出:["b","d", "f"]
p a.values_at(1,3,5,7)
输出:["b","d", "f", nil]
p a.values_at(-1,-3,-5,-7)
输出:["f","d", "b", nil]
p a.values_at(1..3,2...5)
输出:["b", "c", "d", "c", "d", "e"]

二、数据读取
1.范围读取:[start,count]返回从start开始的count个对象
c=[1,3,5,7,9]
print "c[1,3]:#{c[1,3]}" 
print "\nc[3,1]:#{c[3,1]}\n" 
puts c[-3,2]
输出:
c[1,3]:[3, 5, 7]
c[3,1]:[7]
5
7

2.区间:使用range来对数组进行索引,2个点包含结束,3个点不包含
print "c[2..4]:#{c[2..4]}" 
print "\nc[2...4]:#{c[2...4]}" 
print"\nc[-3..-1]:#{c[-3..-1]}" 
print"\nc[-1..-3]:#{c[-1..-3]}\n" 
输出:
c[2..4]:[5, 7, 9]
c[2...4]:[5, 7]
c[-3..-1]:[5, 7, 9]
c[-1..-3]:[]

3.读取指定元素
Array.at比Array[]快,因为不接受range参数
a=[11,22,33,44]
p a.at(1)
输出:22
p a.at(-1)
输出:44
p a.fetch(1)
输出:22
p a.fetch(-1)
输出:44
p a.fetch(-1,'car')
输出:44
p a.fetch(4,'car')
p a 
输出:
"car"
[11, 22, 33, 44]
p a.fetch(4) {|i| i*i}
输出:16

4.first和last存取元素
x=[1,2,3,4]
puts x.first
#output: 1
puts x.last
#output: 4
putsx.first(2).join("-")
#output: 1-2
putsx.last(2).join("-")
#output: 3-4


三、赋值
1.如果长度为0,则赋值语句右边的东西将被插入到数组的起点位置之前,且不删任何元素;
如果右边本身是一个数组,则其元素将替换掉原数组对应位置上的东西;
如果索引下标选择的元素个数和赋值语句右边元素个数不一致,那么数组将会走动调整其大小
c=[1,3,5,7,9]
c[2,2]='ccc'
print "c:#{c}\n" 
输出:c:[1, 3, "ccc", 9]
c[2,0]='coc'
print "c:#{c}\n" 
输出:c:[1, 3, "coc", "ccc", 9]
c[1,1]=[9,8,7]
print "c:#{c}\n" 
输出:c:[1, 9, 8, 7, "coc", "ccc", 9]
c[0..3]=[]
print "c:#{c}\n" 
输出:c:["coc", "ccc", 9]
c[5..6]=99,98
print "c:#{c}\n" 
输出:c:["coc", "ccc", 9, nil, nil, 99, 98]

2.数组可以不设初始值,可以使用 <<操作来添加到数组的末尾,后进先出
x=[]
x<<"Jack"
x<<"Tom"
x<<"Crystal" puts x[2]
#输出:Crystal 
puts x[x.length-1]  
#输出:Crystal 
#pop删除最后一个元素,并返回给元素
x.pop 
puts x[x.length-1] 
#输出:Tom

OSG学习笔记(一)

为了实现最终目标,最近需要掌握一门三维渲染引擎来帮助后续在三维虚拟环境下的研究。之前虽然在OSG和OGRE上纠结了一番,但是后来看到OSG是基于场景图的概念,提供一个在OpenGL之上的面向对象的框架...
  • u012209626
  • u012209626
  • 2015年05月13日 17:55
  • 710

Linux学习笔记之——起始篇

摘要:学习笔记目录、方便以后回顾、没有什么捷径可走、不断的记录、总结、练习、coding、coding。...
  • chenghuaying
  • chenghuaying
  • 2014年03月31日 16:47
  • 4777

OPENWRT学习笔记入门篇

OPENWRT入门首先,分享几个openwrt的网址:http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=4217 http://w...
  • yangquanhui1991
  • yangquanhui1991
  • 2015年07月30日 23:38
  • 942

设备驱动学习笔记(2)----学习目录

字符设备模块化编程调试技术并发资源存取
  • wbw1985
  • wbw1985
  • 2010年03月03日 19:57
  • 422

kvm虚拟化学习笔记(一)之kvm虚拟化环境安装

平时一直玩RHEL/CentOS/OEL系列的操作,玩虚拟化也是采这一类系统,kvm在RHEL6系列操作系统支持比较好,本文采用采用OEL6.3操作系统,网上所有文章都说KVM比xen简单,我怎么感觉...
  • kepa520
  • kepa520
  • 2015年09月27日 17:14
  • 377

LIBSVM学习笔记(一)

LIBSVM学习笔记(一) 参考资料:http://www.matlabsky.com/thread-11925-1-1.html 一、LibSVM LIBSVM是台湾大学林智仁(Lin Chih-J...
  • liyuqian199695
  • liyuqian199695
  • 2017年02月19日 20:37
  • 1316

ruby中数组的定义和使用

(1)数组的创建 names= ["北京", "上海", "天津","重庆"] names= [] #创建一个空数组 (2)数组的使用方式 a)利用数组的索引来访问数组中的元素 数组名[索引...
  • wangjianno2
  • wangjianno2
  • 2016年06月18日 03:00
  • 864

Ruby数组的各种使用

1. 如何创建数组? 最简单的,x=[]将创建一个空数组: irb(main):004:0> x = [] => [] 另外还可以使用标准的new方法,任何数组都是Array类的实例。 ...
  • wlchn
  • wlchn
  • 2015年10月16日 15:59
  • 7705

sklearn 学习笔记一:开始学习sklearn

sklearn的简单开始。
  • xckkcxxck
  • xckkcxxck
  • 2016年11月27日 12:40
  • 425

有趣的Ruby-学习笔记1

Ruby变量ruby支持5种类型一般小写字母、下划线开头:变量(Variable)。$开头:全局变量(Global variable)。@开头:实例变量(Instance variable)。@@开头...
  • nsrainbow
  • nsrainbow
  • 2015年12月14日 00:33
  • 1728
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ruby学习笔记之数组学习(一)
举报原因:
原因补充:

(最多只允许输入30个字)