zoukankan      html  css  js  c++  java
  • 《Rubu基础教程第五版》第十三章笔记 数组类

    数组类 Array

    数组的创建方法

    Array.new 可以接收0,1,2是那种参数

    >> Array.new
    => []
    >> Array.new(5)
    => [nil, nil, nil, nil, nil]
    >> Array.new(5,3)
    => [3, 3, 3, 3, 3]
    >> 
    

    使用%w或%i来创建

    >> %w(hello world)
    => ["hello", "world"]
    >> %i(hello world)
    => [:hello, :world]
    >> 
    

    使用to_a创建

    >> (2..10).to_a
    => [2, 3, 4, 5, 6, 7, 8, 9, 10]
    >> hash = {"abc"=>1, "cde"=>2}
    => {"abc"=>1, "cde"=>2}
    >> hash.to_a
    => [["abc", 1], ["cde", 2]]
    >> 
    

    使用字符串的spilt方法

    => "hello world"
    >> str.split()
    => ["hello", "world"]
    >> 
    

    索引的使用方法

    a[n] 取n索引的元素

    a[n..m]或a[n...m]取n到m的元素,或者n到m-1的元素

    a[n,len]从n索引开始的,len个元素

    a.at(n) 等价 a[n]

    a.slice(n) 等价 a[n]

    a.slice(n..m)等价a[n..m]

    a.slice(n, m) 等价a[n, m]

    替换元素

    同样支持切片赋值

    irb(main):002:0> arr = (1..5).to_a
    => [1, 2, 3, 4, 5]
    irb(main):003:0> arr[1..2]
    => [2, 3]
    irb(main):004:0> arr[1..2] = [7,8,9,]
    => [7, 8, 9]
    irb(main):005:0> arr
    => [1, 7, 8, 9, 4, 5]
    irb(main):006:0> 
    

    插入元素

    插入元素比较有意思,书中用的[x,y]形式

    irb(main):006:0> arr = ('a'.."f").to_a
    => ["a", "b", "c", "d", "e", "f"]
    irb(main):007:0> arr[2,0] = ["x", "y"]
    => ["x", "y"]
    irb(main):008:0> arr
    => ["a", "b", "x", "y", "c", "d", "e", "f"]
    irb(main):009:0> arr[5..5] = ["5", "6"]
    => ["5", "6"]
    irb(main):010:0> arr
    => ["a", "b", "x", "y", "c", "5", "6", "e", "f"]
    irb(main):011:0> 
    irb(main):011:0> arr[7...7] = ["7", "7"]
    => ["7", "7"]
    irb(main):012:0> arr
    => ["a", "b", "x", "y", "c", "5", "6", "7", "7", "e", "f"]

    通过arr[n,0]或者arr[n...n]对n的位置进行插入元素,元素用arr的形式

    起始就像切片赋值的方式进行了插入

    取出指定的值获取的元素组成新的arr

    irb(main):013:0> arr
    => ["a", "b", "x", "y", "c", "5", "6", "7", "7", "e", "f"]
    irb(main):014:0> arr.values_at(1,2,3,7,99)
    => ["b", "x", "y", "7", nil]
    irb(main):015:0> 
    

    ruby没有集合的概念,数组就可以直接拿来当集合用

    交集 & 并集 |

    是只有一个符号

    差集 -

    还可以合并用 +

    模拟栈或者队列形式操作数组

    对数组的开头进行操作 追加元素 unshift 删除元素 shift 引用元素 first

                结尾进行操作  追加元素push   删除元素 pop   引用元素 last

    => ["b", "x", "y", "c", "5", "6", "7", "7", "e", "f"]
    irb(main):019:0> arr.size
    => 10
    irb(main):020:0> arr.first
    => "b"
    irb(main):021:0> arr.first
    => "b"
    irb(main):022:0> arr.size
    => 10
    irb(main):023:0> arr.methods
    => [:to_h, :include?, :at, :fetch, :last, :union, :difference, :push, :append, :pop, :shift, :unshift, :each_index, :join, :rotate, :rotate!, :sort!, :sort_by!, :collect!, :map!, :select!, :filter!, :keep_if, :values_at, :delete_at, :delete_if, :reject!, :transpose, :fill, :assoc, :rassoc, :uniq!, :compact, :compact!, :flatten, :flatten!, :shuffle!, :shuffle, :*, :+, :permutation, :&, :repeated_permutation, :combination, :sample, :repeated_combination, :product, :bsearch, :-, :sort, :bsearch_index, :count, :find_index, :select, :filter, :reject, :collect, :map, :first, :all?, :any?, :one?, :none?, :reverse_each, :zip, :take, :take_while, :drop, :drop_while, :cycle, :sum, :uniq, :|, :insert, :<=>, :<<, :index, :rindex, :replace, :==, :clear, :pack, :[], :[]=, :empty?, :eql?, :max, :min, :reverse, :inspect, :concat, :prepend, :reverse!, :length, :size, :each, :to_ary, :delete, :to_a, :to_s, :slice, :slice!, :dig, :hash, :to_set, :find, :entries, :sort_by, :grep, :grep_v, :detect, :find_all, :flat_map, :collect_concat, :inject, :reduce, :partition, :group_by, :minmax, :min_by, :max_by, :minmax_by, :member?, :each_with_index, :each_entry, :each_slice, :each_cons, :each_with_object, :chunk, :slice_before, :slice_after, :slice_when, :chunk_while, :chain, :lazy, :instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :instance_variable_get, :instance_variable_set, :instance_variables, :singleton_method, :method, :public_send, :define_singleton_method, :public_method, :extend, :to_enum, :enum_for, :===, :=~, :!~, :respond_to?, :freeze, :object_id, :send, :display, :nil?, :class, :singleton_class, :clone, :dup, :itself, :yield_self, :then, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :frozen?, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :equal?, :!, :__id__, :instance_exec, :!=, :instance_eval, :__send__]
    irb(main):024:0> arr
    => ["b", "x", "y", "c", "5", "6", "7", "7", "e", "f"]
    irb(main):025:0> arr.push("push")
    => ["b", "x", "y", "c", "5", "6", "7", "7", "e", "f", "push"]
    irb(main):026:0> arr.unshift("unshift")
    => ["unshift", "b", "x", "y", "c", "5", "6", "7", "7", "e", "f", "push"]
    irb(main):027:0> arr.pop
    => "push"
    irb(main):028:0> arr.last
    => "f"
    irb(main):029:0> 
    

    跟Python比就一个pop是通用的

    数组的主要方法

    unshift 插入头部数据

    << 跟 push 一样

    a.concat(b) 等于 +号 相同与Python的extend

    切片赋值前面已经都讲过了

    由于Ruby跟Python一样属于引用传参,所以当两个变量名指向同一个arr,任何一个操作,都会影响另外一个

    可以通过freeze冻结,通过dup赋值一个解冻的

    irb(main):034:0> arr.freeze
    => ["a", "b", "c"]
    irb(main):035:0> arr[0]= 9
    Traceback (most recent call last):
            4: from /usr/bin/irb:23:in `<main>'
            3: from /usr/bin/irb:23:in `load'
            2: from /Library/Ruby/Gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>'
            1: from (irb):35
    FrozenError (can't modify frozen Array)
    irb(main):036:0> b = arr.dup
    => ["a", "b", "c"]
    irb(main):037:0> b.pop
    => "c"
    irb(main):038:0> b
    => ["a", "b"]
    irb(main):040:0> arr
    => ["a", "b", "c"]
    irb(main):041:0> 
    

     Python中集合也可以用freeze,这样可以当做一种深拷贝使用不错

    从数组中删除元素

    irb(main):046:0> b
    => ["a", nil, "b", nil]
    irb(main):047:0> b.compact
    => ["a", "b"]
    irb(main):048:0> b
    => ["a", nil, "b", nil]
    irb(main):049:0> b.compact!
    => ["a", "b"]
    irb(main):050:0> b
    => ["a", "b"]
    irb(main):051:0> 
    

     compact删除重复元素,如果带!会对自身进行修改

    delete方法,删除执行名称的元素,只要名字相同可以删除多个

    irb(main):052:0> b << "b"
    => ["a", "b", "b"]
    irb(main):053:0> b.delete "b"
    => "b"
    irb(main):054:0> b
    => ["a"]
    irb(main):055:0> 
    

    delete_at方法,删除指定位置的元素

    irb(main):058:0> b
    => ["a", 1, 2, 3, 4, 5]
    irb(main):059:0> b.delete_at(-1)
    => 5
    irb(main):060:0> b
    => ["a", 1, 2, 3, 4]
    irb(main):061:0> 
    

    delete_if 删除后面指定条件

    reject 排除该条件以外的

    reject! 改变自身

    irb(main):066:0> b
    => [1, 2, 3, 4]
    irb(main):067:0> b.reject{|n| n>1}
    => [1]
    irb(main):068:0> b.delete_if{|n| n<3}
    => [3, 4]
    irb(main):069:0> b
    => [3, 4]
    irb(main):070:0> 
    

    删除指定元素

    slice!

    irb(main):072:0> arr = %w(a b c d e f g)
    => ["a", "b", "c", "d", "e", "f", "g"]
    irb(main):073:0> arr.slice!(0)
    => "a"
    irb(main):074:0> arr
    => ["b", "c", "d", "e", "f", "g"]
    irb(main):075:0> arr.slice!(1..2)
    => ["c", "d"]
    irb(main):076:0> arr
    => ["b", "e", "f", "g"]
    irb(main):077:0> arr.slice!(1,9)
    => ["e", "f", "g"]
    irb(main):078:0> arr
    => ["b"]
    irb(main):079:0> 
    

    uniq 去重的

    uniq! 自身去重

    不掩饰了

    shift 取首个元素

    pop 取最后一个元素

    替换数组元素

    collect 与map collect返回的还是一个arr,现在测试用起来

    irb(main):085:0> arr
    => [1, 2, 3, 4, 5]
    irb(main):087:0> arr.collect!{|n|  n**n}
    => [1, 4, 27, 256, 3125]
    irb(main):088:0> arr
    => [1, 4, 27, 256, 3125]
    irb(main):089:0> arr.map{|n| n+1}
    => [2, 5, 28, 257, 3126]
    irb(main):090:0> arr.map!{|n| n+1}
    => [2, 5, 28, 257, 3126]
    irb(main):091:0> arr
    => [2, 5, 28, 257, 3126]
    irb(main):092:0> arr.map!{|n| Math.sqrt(n)}
    => [1.4142135623730951, 2.23606797749979, 5.291502622129181, 16.0312195418814, 55.910642993977454]
    irb(main):093:0> arr
    => [1.4142135623730951, 2.23606797749979, 5.291502622129181, 16.0312195418814, 55.910642993977454]
    irb(main):094:0> 
    

     经过测试,没发现map跟collect的差别

    fill 填充

    一个参数,全部填充这个

    fill(value)

    fill(value, begin)

    fill(value, begin, end)

    fill(value, n..m)

    irb(main):096:0> arr.fill(999)
    => [999, 999, 999, 999, 999]
    irb(main):097:0> arr
    => [999, 999, 999, 999, 999]
    irb(main):098:0> arr.fill(0,2)
    => [999, 999, 0, 0, 0]
    irb(main):099:0> arr.fill(6,1,2)
    => [999, 6, 6, 0, 0]
    irb(main):100:0> arr.fill(6,3..5)
    => [999, 6, 6, 6, 6, 6]
    irb(main):101:0> 
    

    flatten

    flatten!修改自身,取出嵌套的效果,变成一个没有嵌套的数组

    irb(main):101:0> a = [1,[2,[3]],4,[[5]]]
    => [1, [2, [3]], 4, [[5]]]
    irb(main):102:0> a.flatten!
    => [1, 2, 3, 4, 5]
    irb(main):103:0> a
    => [1, 2, 3, 4, 5]
    irb(main):104:0> 
    

    reverse反转

    reverse!自身反转

    sort排序,默认都是从小到大

    sort_by 必须通过{}填写参数

    前面章节,已经介绍过具体用法

    数组与迭代器

    collect返回个一个array对象

    irb(main):104:0> a = 1..5
    => 1..5
    irb(main):105:0> b = a.collect{|n| n**n}
    => [1, 4, 27, 256, 3125]
    irb(main):106:0> b
    => [1, 4, 27, 256, 3125]
    irb(main):107:0> a
    => 1..5
    irb(main):108:0> a.map{|n| n**n}
    => [1, 4, 27, 256, 3125]
    irb(main):109:0> 
    

    处理数组中的元素

    for 循环处理

    list = [1, 3, 7, 9]
    sum = 0
    for i in 0...list.size
      sum += list[i]
     end
    
    print "合计为#{sum}"
    

    另外用each或each_with_index 或者对arr进行pop方法,调用 while

    while item = a.pop

      ## 对item进行处理

    end

    创建矩阵

    a = Array.new(3, [0,0,0])

    这个创建的举证,每个元素指向同一个地址

    需要不同的地址,要这么写

    shijianongdeMBP:chapter_13 shijianzhong$ cat t.rb 
    a = Array.new(3) do
      [0, 0, 0]
    end
    
    p a
    

    还有一种.new后面通过{}的形式创建array

    irb(main):001:0> Array.new(5){|i| i + 1}
    => [1, 2, 3, 4, 5]
    irb(main):002:0> Array.new(5){|i| i ** i}
    => [1, 1, 4, 27, 256]
    irb(main):003:0> Array.new(5){|i| i}
    => [0, 1, 2, 3, 4]
    irb(main):004:0> 
    

    同时访问多个数组

    就写一个zip的用法

    shijianongdeMBP:chapter_13 shijianzhong$ cat sum_with_zip.rb 
    ary1 = [1, 2, 3, 5]
    ary2 = [10, 20, 30, 40, 50]
    ary3 = 100.step(500, 100)
    
    result = []
    ary1.zip(ary2, ary3) do |a, b, c|
      result.push( a + b + c)
    end
    
    p result
    
    irb(main):001:0> [].methods
    => [:to_h, :include?, :at, :fetch, :last, :union, :difference, :push, :append, :pop, :shift, :unshift, :each_index, :join, :rotate, :rotate!, :sort!, :sort_by!, :collect!, :map!, :select!, :filter!, :keep_if, :values_at, :delete_at, :delete_if, :reject!, :transpose, :fill, :assoc, :rassoc, :uniq!, :compact, :compact!, :flatten, :flatten!, :shuffle!, :shuffle, :*, :+, :permutation, :&, :repeated_permutation, :combination, :sample, :repeated_combination, :product, :bsearch, :-, :sort, :bsearch_index, :count, :find_index, :select, :filter, :reject, :collect, :map, :first, :all?, :any?, :one?, :none?, :reverse_each, :zip, :take, :take_while, :drop, :drop_while, :cycle, :sum, :uniq, :|, :insert, :<=>, :<<, :index, :rindex, :replace, :==, :clear, :pack, :[], :[]=, :empty?, :eql?, :max, :min, :reverse, :inspect, :concat, :prepend, :reverse!, :length, :size, :each, :to_ary, :delete, :to_a, :to_s, :slice, :slice!, :dig, :hash, :to_set, :find, :entries, :sort_by, :grep, :grep_v, :detect, :find_all, :flat_map, :collect_concat, :inject, :reduce, :partition, :group_by, :minmax, :min_by, :max_by, :minmax_by, :member?, :each_with_index, :each_entry, :each_slice, :each_cons, :each_with_object, :chunk, :slice_before, :slice_after, :slice_when, :chunk_while, :chain, :lazy, :instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :instance_variable_get, :instance_variable_set, :instance_variables, :singleton_method, :method, :public_send, :define_singleton_method, :public_method, :extend, :to_enum, :enum_for, :===, :=~, :!~, :respond_to?, :freeze, :object_id, :send, :display, :nil?, :class, :singleton_class, :clone, :dup, :itself, :yield_self, :then, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :frozen?, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :equal?, :!, :__id__, :instance_exec, :!=, :instance_eval, :__send__]
    irb(main):002:0> 
    

     内置的方法实在太多了

    练习题

    1.创建一个数组a,使1到100的整数按升序排列

    irb(main):002:0> Array.new(100){|i| i}
    => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
    irb(main):003:0> (0...100).to_a
    => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
    irb(main):004:0> 
    

     2.不创建新的数组,使1的数组的每个元素扩大100倍

    irb(main):006:0> arr.map!{|num| num*100}
    => [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000, 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900, 4000, 4100, 4200, 4300, 4400, 4500, 4600, 4700, 4800, 4900, 5000, 5100, 5200, 5300, 5400, 5500, 5600, 5700, 5800, 5900, 6000, 6100, 6200, 6300, 6400, 6500, 6600, 6700, 6800, 6900, 7000, 7100, 7200, 7300, 7400, 7500, 7600, 7700, 7800, 7900, 8000, 8100, 8200, 8300, 8400, 8500, 8600, 8700, 8800, 8900, 9000, 9100, 9200, 9300, 9400, 9500, 9600, 9700, 9800, 9900]
    irb(main):007:0> arr
    => [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000, 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900, 4000, 4100, 4200, 4300, 4400, 4500, 4600, 4700, 4800, 4900, 5000, 5100, 5200, 5300, 5400, 5500, 5600, 5700, 5800, 5900, 6000, 6100, 6200, 6300, 6400, 6500, 6600, 6700, 6800, 6900, 7000, 7100, 7200, 7300, 7400, 7500, 7600, 7700, 7800, 7900, 8000, 8100, 8200, 8300, 8400, 8500, 8600, 8700, 8800, 8900, 9000, 9100, 9200, 9300, 9400, 9500, 9600, 9700, 9800, 9900]
    irb(main):008:0> 
    

     3 获取1数组中是3的倍数的元素,创建新数组a3。不创建新数组,把3的倍数以外的元素全部删除

    irb(main):017:0> a3 = arr.select{|num| num % 3 == 0}
    => [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
    irb(main):018:0> a3
    => [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
    irb(main):019:0> arr.delete_if{|num| num % 3 == 0}
    => [1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 49, 50, 52, 53, 55, 56, 58, 59, 61, 62, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 85, 86, 88, 89, 91, 92, 94, 95, 97, 98, 100]
    irb(main):020:0> arr
    => [1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 49, 50, 52, 53, 55, 56, 58, 59, 61, 62, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 85, 86, 88, 89, 91, 92, 94, 95, 97, 98, 100]
    irb(main):021:0> 
    

     4将1数组的元素按倒序排序

    irb(main):024:0> arr.sort_by{|i| -i}
    => [100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    irb(main):025:0> 
    

     5 求1数组中的和

    irb(main):026:0> sum = 0
    => 0
    irb(main):027:0> arr.each{|i| sum +=i}
    => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
    irb(main):028:0> p sum
    5050
    => 5050
    irb(main):029:0> 
    

     6 直接上代码

    irb(main):030:0> result = Array.new
    => []
    irb(main):031:0> 10.times do |i|
    irb(main):032:1*   result << arr[i*10,10]
    irb(main):033:1> end
    => 10
    irb(main):034:0> p result
    [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [21, 22, 23, 24, 25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36, 37, 38, 39, 40], [41, 42, 43, 44, 45, 46, 47, 48, 49, 50], [51, 52, 53, 54, 55, 56, 57, 58, 59, 60], [61, 62, 63, 64, 65, 66, 67, 68, 69, 70], [71, 72, 73, 74, 75, 76, 77, 78, 79, 80], [81, 82, 83, 84, 85, 86, 87, 88, 89, 90], [91, 92, 93, 94, 95, 96, 97, 98, 99, 100]]
    => [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [21, 22, 23, 24, 25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36, 37, 38, 39, 40], [41, 42, 43, 44, 45, 46, 47, 48, 49, 50], [51, 52, 53, 54, 55, 56, 57, 58, 59, 60], [61, 62, 63, 64, 65, 66, 67, 68, 69, 70], [71, 72, 73, 74, 75, 76, 77, 78, 79, 80], [81, 82, 83, 84, 85, 86, 87, 88, 89, 90], [91, 92, 93, 94, 95, 96, 97, 98, 99, 100]]
    irb(main):035:0> 
    

     7定义方法sum_array,计算数值数组nums1和num2中相对应的各个元素的合计值,并将结果作为数组返回。

    #! /usr/bin/env ruby
    
    def sum_array(arr1, arr2)
      new_arr = []
      arr1.zip(arr2).each do |x,y|
        new_arr.push(x+y)
      end
      new_arr
    end
    
    p sum_array([1, 2, 3], [4, 6, 8])
    
  • 相关阅读:
    Moya 浅析
    Swift: Alamofire -> http请求 & ObjectMapper -> 解析JSON
    ReactiveCocoa 用法实例
    RACSignal的Subscription深入
    idea 不能编译生成class文件
    idea 右下角不显示git分支
    SSO单点登录的研究
    JVM内存模型简介
    Spring事务处理
    RabbitMQ
  • 原文地址:https://www.cnblogs.com/sidianok/p/13045049.html
Copyright © 2011-2022 走看看