在程序中定义一个数组

在程序中定义一个数组,因为我们在下面说明。

fruits = ["apple", "orange", "lemon"]
scores = [55, 49, 100, 150, 0]

如果你是指使用数组的数组#[]的方法,我们将指定数目的元素的数组作为参数。我单元号是从0开始。在上面的例子中,fruits[0]返回“apple”,scores[3]将返回150。
也可以是一个(嵌套)嵌套的序列如下所示。

fruits = [3, ["apple", 250], ["orange", 400], ["lemon", 300]]

p fruits[0] #=> 3
p fruits[1][1] #=> 250
p fruits[3][0] #=> "lemon"

输出数组元素的一个逗号分隔的列表
您将能够得到一个字符串分隔的任何字符串,数组中的元素使用Array#join方法。

p ["apple", "orange", "lemon"].join(',') #=> "apple,orange,lemon"
p ["apple", "orange", "lemon"].join('#') #=> "apple#orange#lemon"
p [55, 49, 100, 100, 0].join(',') #=> "55,49,100,100,0"
p [3, ["apple", 250], ["orange", 400]].join(',') #=> "3,apple,250,orange,400"

获取在数组中的元素数
你可以得到数组中的元素个数的数组长度数组大小的方法或方法。

p ["apple", "orange", "lemon"].size #=> 3
p ["apple", "orange", "lemon"].length #=> 3
p [55, 49, 100, 100, 0].size #=> 5
p [3, ["apple", 250], ["orange", 400]].size #=> 3

将元素添加到数组

如果你想生成一个数组添加一个元素后,我们可以使用Array#<<的方法,Array#unshift方法,Array#push。

array#<<将元素追加早最后,array#unshift方法可以将元素添加到数组开头。

A = [1,2,3,4,5]#=> [1,2,3,4,5] 

A << 99#=> [1,2,3,4,5,99]
A.Unshift (99)#=> [99,1,2,3,4,5,99]

Array#push方法可以被添加到的数组元素的结尾

A = [1,2,3,4,5] 

A.Push(10)#=> [1,2,3,4,5,10]

从开头或结尾的数组元素删除
在Array#shift的方法,可以检索的元素,从一开始的数组。array#pop方法是可以检索的数组中的元素。提取值的数组移位的方法,数组#pop方法,数组中的元素的提取物中删除。

a = [1,2,3,4,5]

a.push(10) #=> [1, 2, 3, 4, 5, 10]
p a.pop #=> 10
p a.pop #=> 5
p a #=> [1, 2, 3, 4]

提取一个子数组

你可以把部分的数组用array#slice的方法或Array#[]的方法。

a = [1,2,3,4,5]

p a[0,2] #=> [1, 2]
p a[1..3] #=> [2, 3, 4]
p a.slice(0,2) #=> [1, 2]
p a.slice(1..3) #=> [2, 3, 4]

array#slice! 方法会改变原来数组元素

a = [1,2,3,4,5]

p a.slice!(0,2) #=> [1,2]
p a #=> [3,4,5] p a.slice!(1,2) #=> [4,5]
p a #=> [3]

填充任何数组的值
您可以使用array#fill方法填充任意元素。这种方法会改变原来数组元素。

a = [1,2,3,4,5]

a.fill(255, 2,2) #=> [1, 2, 255, 255, 5]
a.fill(0, 1..2) #=> [1, 0, 0, 255, 5]

清空数组
您可以用array#clear方法清空数组所有元素。

a = [1,2,3,4,5]
a.clear #=> [] p a #=> []

连接数组

可以使用array#+或者array#concat方法将多个数组连接

a = [1,2,3,4,5]

p a + [10, 20] #=> [1, 2, 3, 4, 5, 10, 20]
p a #=> [1, 2, 3, 4, 5]
a.concat([10, 20]) #=> [1, 2, 3, 4, 5, 10, 20]
p a #=> [1, 2, 3, 4, 5, 10, 20]

数组的交集与并集

p [1,3,5,7] | [2,4,6,8] #=> [1, 3, 5, 7, 2, 4, 6, 8]
p [1,2,3,4] | [3,4,5,6] #=> [1, 2, 3, 4, 5, 6] p [1,3,5,7] & [2,4,6,8] #=> []
p [1,2,3,4] & [3,4,5,6] #=> [3, 4]

修改数组中多个元素

a = [1,2,3,4,5]

a[0...2] = [111, 222, 333]
p a #=> [111, 222, 333, 3, 4, 5] a[3,2] = [444,555] #=> [444, 555]
p a #=> [111, 222, 333, 444, 555, 5]

将多维数组转换为一维数组

a = [1,[2,[3,4],5],[6,7]]

p a.flatten #=> [1, 2, 3, 4, 5, 6, 7]
a.flatten! #=> [1, 2, 3, 4, 5, 6, 7]

数组元素排序方法

p [5,1,4,2,3].sort #=> [1, 2, 3, 4, 5]

a = [5,1,4,2,3]
a.sort! #=> [1, 2, 3, 4, 5]
p a #=> [1, 2, 3, 4, 5] p ["Orange", "Apple", "Lemon"].sort #=> ["Apple", "Lemon", "Orange"]

指定表达式的数组排序

a = ["Hitoshi,045", "Sizuo,046", "Yoshi,0138"]

p a.sort{|a, b| a.split(',')[1] <=> b.split(',')[1]} #=> ["Yoshi,0138", "Hitoshi,045", "Sizuo,046"]
ar = [[2,"b"],[3,"a"],[1,"c"]]
ar.sort{|p,q|p[0]<=>q[0]}
#=> [[1, "c"], [2, "b"], [3, "a"]]
ar.sort{|p,q|p[1]<=>q[1]}
# => [[3, "a"], [2, "b"], [1, "c"]]

反转数组

a = [5,1,4,2,3]

a.sort! #=> [1, 2, 3, 4, 5]
p a.reverse #=> [5, 4, 3, 2, 1]
a.reverse! #=> [5, 4, 3, 2, 1]

删除指定位置的数组元素

a = [5,1,4,2,3]

a.delete_at(0) #=> 5
p a #=> [1, 4, 2, 3] a.delete_at(1) #=> 4
p a #=> [1, 2, 3]

删除匹配元素

a = ["apple", "orange", "lemon", "apple", "vine"]

a.delete("apple") #=> ["apple"]
p a #=> ["orange", "lemon", "vine"]
a.delete("apple") { |x| puts "#{x} not found" } #=> "apple not found"

删除重复元素

a = [30,20,50,30,10,10,40,50]
p a.uniq #=> [30, 20, 50, 10, 40] a = ["/tmp","/home/","/etc","/tmp"]
a.uniq! #=> ["/tmp", "/home", "/etc"]

从数组中删除指定条件的元素

a = [30,100,50,80,79,40,95]

a.delete_if {|x| x < 80} #=> [100, 80, 95]
p a #=> [100, 80, 95] p a.reject {|x| x < 90} #=> [100, 95]
p a #=> [100, 80, 95] a.reject! {|x| x < 90} #=> [100, 95]
p a #=> [100, 95] a = ["Takeuchi", "Tanaka", "Satou", "Andou", "Kurasaki"] a.delete_if {|x| /^T.*/ =~ x} #=> ["Satou", "Andou", "Kurasaki"]

数组中提取指定条件的元素

a = [1, 2, 3, 4]
p a.select{|x| x % 2 == 0} # => [2, 4] b = [['Taro', 'M'], ['Hanako', 'F'], ['Jiro', 'M'], ['Sachiko', 'F']]
p b.select{|x| x[1]=='M'} # => [["Taro", "M"], ["Jiro", "M"]]

查找数组元素

a = ["apple",10,"orange",["lemon","vine"]]

p a.index("apple") #=> 0
p a.index(10) #=> 1
p a.index(["lemon","vine"]) #=> 3
p a.index("fruit") #=> nil

搜索多维数组

a = [["apple",100],["vine",500],["orange",300]]

p a.assoc("apple")  #=> ["apple", 100]
p a.assoc("orange") #=> ["orange", 300]
p a.assoc("pear") #=> nil

创建新数组

使用array#map 或者array#collect方法

a = [10, 20, 30, 40, 50]
p a.collect {|x| x*10} #=> [100, 200, 300, 400, 500]
p a #=> [10, 20, 30, 40, 50] p a.map {|x| x*10} #=> [100, 200, 300, 400, 500]
p a #=> [10, 20, 30, 40, 50] a.collect! {|x| x/10} #=> [1, 2, 3, 4, 5]
p a #=> [1, 2, 3, 4, 5] a = [["vine", 2, 500], ["orange", 3, 100], ["apple", 10, 50]]
p a.map {|x| [x[0], x[1]*x[2]]} #=> [["vine", 1000], ["orange", 300], ["apple", 500]]

迭代数组中各个元素

["Taro", "Hanako", "Ichiro"].each {|x| puts "Hello, #{x}"}
#=> "Hello, Taro"
#=> "Hello, Hanako"
#=> "Hello, Ichiro" sum = 0
[1,2,3,4,5,6,7,8,9,10].each {|x| sum += x}
p sum #=> 55

还可以使用Array#reverse_each方法反转元素迭代

随机提取数组元素

if RUBY_VERSION < '1.9.0'
class Array
def choice
at( rand( size ) )
end
end
end
[1, 2, 3].choice #=> 3
[1, 2, 3].choice #=> 1

用%w方式你可以把用分割符号包含的;用空格隔开的不同字符串定义为一个数组:
words = %w[this is a test]  # 等同于: ['this', 'is', 'a', 'test']
open = %w| ( [ { < |        # 等同于: ['(', '[', '{', '<']
white = %W(\s \t \r \n)     # 等同于: ["\s", "\t", "\r", "\n"]

用%w或%W定义数组的方式类似于用%q和%Q定义字符串,分界符号的规则也一样,在分界符号中的元素无需分号('',“”)包含,无需逗号分隔,不同元素之间用空格隔开。
你还可以通过Array.new 来定义数组,这种方式可以让你通过程序化的手段还初始化数组:

ruby中数组的常用函数的更多相关文章

  1. Ruby中Time的常用函数

      Time的常用函数 时间对象. Time.now返回当前时间. 1.Time.at Time.at(time[, usec]) 返回time所指时间的Time对象. time可以是Time对象,也 ...

  2. php 数组的常用函数

    在php教程中数组是种强大的数据类型,他可以做的事情很多,可以存储不同的数据类型在一个数组中,下面我们列出了数组常用的操作,排序,键名对数组排序等做法. /* 数组的常用函数  *  * 数组的排序函 ...

  3. PHP数组的常用函数

    在PHP中数组是种强大的数据类型,他可以做的事情很多,可以存储不同的数据类型在一个数组中,下面我们列出了数组常用的操作,排序,键名对数组排序等做法. /* 数组的常用函数  *  * 数组的排序函数 ...

  4. 操作 numpy 数组的常用函数

    操作 numpy 数组的常用函数 where 使用 where 函数能将索引掩码转换成索引位置: indices = where(mask) indices => (array([11, 12, ...

  5. javascript中数组的常用算法深入分析

    Array数组是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.本文将给大家详细介绍了javascri ...

  6. php中文件操作常用函数有哪些

    php中文件操作常用函数有哪些 一.总结 一句话总结:读写文件函数 判断文件或者目录是否存在函数 创建目录函数 file_exists() mkdir() file_get_content() fil ...

  7. c++中string的常用函数说明

    string可以说是是字符数组的升级版,使用更加啊方便,不容易出错.本文对string的常用函数进行简单介绍,做到会用即可. string中的常用函数分为四类,即赋值,添加,比较和删除. 一.赋值 1 ...

  8. PHP中的一些常用函数

    <?php //===============================时间日期=============================== //y返回年最后两位,Y年四位数,m月份数字 ...

  9. Ruby中数组的遍历

    转自:http://www.jianshu.com/p/8de9b60f9350 Ruby中有几个常用的遍历数组的方法,本人经常容易搞混.这里列出来总结一下. each: 从数组中取出一个元素,作为某 ...

随机推荐

  1. [翻译]Writing Custom Wizards 编写自定义的向导

    Writing Custom Wizards  编写自定义的向导   You can extend FastReport's functionality with the help of custom ...

  2. Configure Pi as simulation hardware for Simulink

    1. Only version not older than R2013 supports Raspberry Pi. First, download support package in Matla ...

  3. 项目笔记---事半功倍之GhostDoc(二)

    前言 前一篇文章<项目笔记---事半功倍之StyleCop(一)>提到如何约束代码,规范代码风格,这一节,我们将了解如何快速生成符合规则的代码注释---GhostDoc 一.安装Ghost ...

  4. LeetCode151:Reverse Words in a String

    题目: Given an input string, reverse the string word by word. For example,      Given s = "the sk ...

  5. NetCore偶尔有用篇:NetCore项目添加MIME

    一.简介 1.系统默认给我们提供的一些文件类型的处理方式. 2.系统没有为我们提供处理的文件类型无法使用,例如:apk 3.这里候就需要自己添加MIME,才能进行访问 4.下面就是添加apk访问的示例 ...

  6. C# 动态生成Html地图文件

    public void GPSModel(string x, string y, string ss)//动态地图文件 { if (x.Contains("-") &&am ...

  7. 使用FFMpeg命令行录屏推rtmp流

    最近在做局域网内屏幕分享方面的东西,要把录制一台设备的屏幕然后实时推送给内网的一个或多个用户. 做了很多实验,效果还没有达到要求,这里分享一下推rtmp流的实验. 实验使用到的各种工具:FFmpeg. ...

  8. 201621123018《Java程序设计》第2周学习报告

    Week02-Java基本语法与类库 1.本周学习总结 Java数据类型分为基本数据类型和引用数据类型.布尔型是Java特有的数据类型.本周重点学习了字符串类型String,String类型中==和e ...

  9. 转载:不定义JQuery插件,不要说会JQuery

    转载:http://www.cnblogs.com/xcj26/p/3345556.html 一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#") ...

  10. ansible 的第一次亲密接触

    如何添加一台机器 编辑 /etc/ansible/hosts 添加本机的 public ssh key 到目标机器的 authorized_keys 添加本机的 私钥 到 ansible 运行 ans ...