热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RubyArray

RubyArray创建数组irb(main):001:0a[1,2,3][1,2,3]irb(main):002:0b[1,2,3.14][1,2,3.14]

Ruby Array

创建数组

irb(main):001:0> a=[1,2,3]
=> [1, 2, 3]
irb(main):002:0> b=["1",2,3.14]
=> ["1", 2, 3.14]
irb(main):003:0> c=Array.new
=> []
irb(main):004:0> d=Array.new(5)
=> [nil, nil, nil, nil, nil]
irb(main):005:0> e=Array.new(5,0)
=> [0, 0, 0, 0, 0]
irb(main):006:0> la=%w(Ruby Perl Python Scheme Pike REBOL)
=> ["Ruby", "Perl", "Python", "Scheme", "Pike", "REBOL"]
irb(main):007:0> li=%i(Ruby Perl Python Scheme Pike REBOL)
=> [:Ruby, :Perl, :Python, :Scheme, :Pike, :REBOL]
irb(main):008:0> color_table={black:"#000000",white:"#FFFFF"}
=> {:black=>"#000000", :white=>"#FFFFF"}
irb(main):009:0> color_table.to_a
=> [[:black, "#000000"], [:white, "#FFFFF"]]
irb(main):010:0> column="1 2 3 4 5 8 0".split
=> ["1", "2", "3", "4", "5", "8", "0"]

索引的使用

li[0]
=> :Ruby
irb(main):012:0> li[4]
=> :Pike
irb(main):013:0> a[1..2]
=> [2, 3]
irb(main):014:0> a[0...3]
=> [1, 2, 3]
irb(main):015:0> a[0..3]
=> [1, 2, 3]
irb(main):016:0> a[0..2]
=> [1, 2, 3]
irb(main):017:0> a[0,2]
=> [1, 2]
irb(main):018:0> a[0,3]
=> [1, 2, 3]
irb(main):019:0> a[-1]
=> 3
irb(main):020:0> a[-1,2]
=> [3]
irb(main):021:0> a[-2]
=> 2
irb(main):022:0> a[-3]
=> 1
irb(main):023:0> a[-4]
=> nil
irb(main):024:0> li
=> [:Ruby, :Perl, :Python, :Scheme, :Pike, :REBOL]
irb(main):025:0> li[0]=:china
=> :china
irb(main):026:0> li
=> [:china, :Perl, :Python, :Scheme, :Pike, :REBOL]
irb(main):027:0> li[2,0]=[:X,:Y]
=> [:X, :Y]
irb(main):028:0> li
=> [:china, :Perl, :X, :Y, :Python, :Scheme, :Pike, :REBOL]

将数组用作集合

&: 集合的交,|:集合的并,-:集合的差,+:集合的连接

irb(main):029:0> ary1="a b c".split
=> ["a", "b", "c"]
irb(main):030:0> ary2="b c d".split
=> ["b", "c", "d"]
irb(main):031:0> ary1 & ary2
=> ["b", "c"]
irb(main):032:0> ary1 | ary2
=> ["a", "b", "c", "d"]
irb(main):033:0> ary1 - ary2
=> ["a"]
irb(main):034:0> ary2- ary1
=> ["d"]
irb(main):035:0> ary1 + ary2
=> ["a", "b", "c", "b", "c", "d"]

数组用作栈、队列

a=[1,3,2,4]
a.push 99 #a=[1,2,3,4,99]
a.pop #99 a=[1,2,3,4]

队列

a=[1,2,3,4]
a.push 99 #a=[1,2,3,4,99]
a.shift #1 a=[2,3,4,99]

数组的主要方法

irb(main):042:0> a
=> [2, 46, 7, 8]
irb(main):043:0> a.unshift 10
=> [10, 2, 46, 7, 8]
irb(main):044:0> a<<1000
&#61;> [10, 2, 46, 7, 8, 1000]
irb(main):045:0> a.push 1001
&#61;> [10, 2, 46, 7, 8, 1000, 1001]
irb(main):046:0> a.concat "16 15 11".split
&#61;> [10, 2, 46, 7, 8, 1000, 1001, "16", "15", "11"]
irb(main):047:0> a&#43; [111,112,113]
&#61;> [10, 2, 46, 7, 8, 1000, 1001, "16", "15", "11", 111, 112, 113]
irb(main):048:0> ary&#61;[13,nil,666,nil,777,nil,999,nil]
&#61;> [13, nil, 666, nil, 777, nil, 999, nil]
irb(main):049:0> ary.compact
&#61;> [13, 666, 777, 999]
irb(main):050:0> a.delete 111
&#61;> nil
irb(main):051:0> a
&#61;> [10, 2, 46, 7, 8, 1000, 1001, "16", "15", "11"]
irb(main):052:0> a.delete_at 2
&#61;> 46
irb(main):053:0> a
&#61;> [10, 2, 7, 8, 1000, 1001, "16", "15", "11"]
irb(main):054:0> a.delete_if{|item| item.class&#61;&#61;String}
&#61;> [10, 2, 7, 8, 1000, 1001]
irb(main):055:0> a.reject {|item| item>&#61;1000}
&#61;> [10, 2, 7, 8]
irb(main):056:0> a.slice 1,2
&#61;> [2, 7]
irb(main):057:0> d&#61;[1,1,1,3,4,6,6,8,9]
&#61;> [1, 1, 1, 3, 4, 6, 6, 8, 9]
#获取只出现一次的元素
irb(main):059:0> d.uniq
&#61;> [1, 3, 4, 6, 8, 9]
irb(main):060:0> d.shift
&#61;> 1
irb(main):061:0> d
&#61;> [1, 1, 3, 4, 6, 6, 8, 9]
irb(main):062:0> a.pop
&#61;> 1001
irb(main):063:0> a
&#61;> [10, 2, 7, 8, 1000]

collect,map,fill

irb(main):064:0> arr&#61;[6,4,3,6,9,8]
&#61;> [6, 4, 3, 6, 9, 8]
irb(main):065:0> arr.collect{|item| item**2}
&#61;> [36, 16, 9, 36, 81, 64]
irb(main):066:0> a.map{|item| item*2}
&#61;> [20, 4, 14, 16, 2000]
irb(main):067:0> arr.map{|item| item*2}
&#61;> [12, 8, 6, 12, 18, 16]
irb(main):068:0> x&#61;Array.new
&#61;> []
irb(main):071:0> x<<1
&#61;> [1]
irb(main):072:0> x<<111
&#61;> [1, 111]
irb(main):073:0> x<<222
&#61;> [1, 111, 222]
irb(main):074:0> x.fill(0) #将所有值替换为0
&#61;> [0, 0, 0]
irb(main):075:0> y&#61;[1,111,222]#
&#61;> [1, 111, 222]
irb(main):076:0> y.fill(-1,1) #将索引为1处的值替换为-1
&#61;> [1, -1, -1]
irb(main):077:0> y.fill 1000,1,1 #fill(value,begin,len)
&#61;> [1, 1000, -1]

flatten,sort,sort_by

irb(main):078:0> e&#61;[]
&#61;> []
irb(main):079:0> e<<[1,3]
&#61;> [[1, 3]]
irb(main):080:0> e<<[2,4]
&#61;> [[1, 3], [2, 4]]
irb(main):081:0> e<<[9,0]
&#61;> [[1, 3], [2, 4], [9, 0]]
irb(main):082:0> e.flatten
&#61;> [1, 3, 2, 4, 9, 0]
irb(main):083:0> e.reverse
&#61;> [[9, 0], [2, 4], [1, 3]]
irb(main):084:0> f&#61;e.flatten
&#61;> [1, 3, 2, 4, 9, 0]
irb(main):085:0> f.sort{|i,j| i<&#61;>j}
&#61;> [0, 1, 2, 3, 4, 9]
irb(main):086:0> f.sort_by{|item| -item}
&#61;> [9, 4, 3, 2, 1, 0]

获取数组的各元素值

list&#61;[1,3,5,7,9]
&#61;> [1, 3, 5, 7, 9]
irb(main):094:0> sum&#61;0
&#61;> 0
irb(main):095:0> list.each do |item|
irb(main):096:1* sum&#43;&#61;item
irb(main):097:1> end
&#61;> [1, 3, 5, 7, 9]
irb(main):098:0> sum
&#61;> 25
irb(main):099:0> list.each_with_index do |item,index|
irb(main):100:1* p item,index end
1
0
3
1
5
2
7
3
9
4

访问多个数组

irb(main):101:0> ary1&#61;[1,2,3]
&#61;> [1, 2, 3]
irb(main):102:0> ary2&#61;[100,200,300]
&#61;> [100, 200, 300]
irb(main):103:0> ary3&#61;[5,4,3]
&#61;> [5, 4, 3]
irb(main):104:0> ary1.zip ary2,ary3 do |a,b,c|
irb(main):105:1* p a.to_s&#43;" "&#43;b.to_s&#43;" "&#43;c.to_s end
"1 100 5"
"2 200 4"
"3 300 3"
&#61;> nil

转:https://www.cnblogs.com/never-ever/p/5190016.html



推荐阅读
  • 本文深入探讨了使用Puppet进行软件包分发与管理的方法。首先介绍了fpm这一跨平台的软件包制作工具,其简便的操作流程使得软件包的创建变得轻松快捷。fpm的项目地址为:https://github.com/jordansissel/fpm。通过结合Puppet和fpm,可以实现高效、可靠的软件包管理和部署。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在尝试对从复杂 XSD 生成的类进行序列化时,遇到了 `NullReferenceException` 错误。尽管已经花费了数小时进行调试和搜索相关资料,但仍然无法找到问题的根源。希望社区能够提供一些指导和建议,帮助解决这一难题。 ... [详细]
  • 构建基础的字符串队列实现方法
    在探讨如何构建基础的字符串队列实现方法时,我们发现许多开发者在面对这一问题时常常感到困惑。实际上,队列的基本原理非常简单,即遵循先进先出的原则。然而,在具体实现过程中,需要注意的是Java语言中并没有指针的概念,因此需要通过嵌套类来模拟指针,进而构建链表结构。这种实现方式不仅能够有效地管理字符串数据,还能提升代码的可读性和维护性。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 深入理解排序算法:集合 1(编程语言中的高效排序工具) ... [详细]
  • 链表作为一种与数组并列的基本数据结构,在Java中有着广泛的应用。例如,Java中的`ArrayList`基于数组实现,而`LinkedList`则是基于链表实现。链表在遍历操作时具有独特的性能特点,特别是在插入和删除节点时表现出色。本文将详细介绍单向链表的基本概念、操作方法以及在Java中的具体实现,帮助读者深入理解链表的特性和应用场景。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 寒假作业解析:第三周 2月12日 第7题
    尽快完成之前的练习任务!每日一练2.1 Problem A Laurenty and Shop 的题目要求是选择两条不同的路线以最小化总的等待时间。简要分析:通过对比不同路线的等待时间,可以找到最优解。此问题可以通过动态规划或贪心算法来解决,具体取决于路线的复杂性和约束条件。 ... [详细]
  • 在Python网络编程中,多线程技术的应用与优化是提升系统性能的关键。线程作为操作系统调度的基本单位,其主要功能是在进程内共享内存空间和资源,实现并行处理任务。当一个进程启动时,操作系统会为其分配内存空间,加载必要的资源和数据,并调度CPU进行执行。每个进程都拥有独立的地址空间,而线程则在此基础上进一步细化了任务的并行处理能力。通过合理设计和优化多线程程序,可以显著提高网络应用的响应速度和处理效率。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • [BZOJ1047] [HAOI2007] 单调队列在理想正方形问题中的应用与优化
    本文探讨了在解决理想正方形问题时,如何利用单调队列进行高效优化。具体而言,给定一个由整数组成的 \(a \times b\) 矩阵,目标是从中找到一个 \(n \times n\) 的子矩阵,使该子矩阵内所有元素的最大值与最小值之差最小。输入部分首先提供三个整数,分别表示矩阵的行数、列数以及子矩阵的边长。通过引入单调队列,算法能够显著提高搜索效率,从而快速找到最优解。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
author-avatar
重庆制造漫画社
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有