zoukankan      html  css  js  c++  java
  • Ruby笔记四(数组)

    #E8.1-1.rb
    =begin
    数组的索引从0开始,一直到数组的长度减去1;
    负数表示从数组末尾开始的索引;
    用一对数字来索引数组,第一个数字表示开始位置,第二数字表示从开始位置起的元素数目  
    =end
    arr=[3,4,5,6,7,8,9]
    puts arr[0#3
    puts arr.first #3
    puts arr[arr.length-1#9
    puts arr[arr.size-1#9
    puts arr.last #9
    puts arr[-1#9
    puts arr[-2#8
    print arr[1..3].join(",") ,"\n" #4, 5, 6
    print arr[-3,2] ,"\n" #[7, 8]

    #Ruby的数组大小是动态的,你能够随时增加、删除数组元素。

    arr=[4,5,6]
    print arr.join(""),"\n" #4, 5, 6

    arr[4] = "m" #把4号索引位置元素赋值为"m"
    print arr.join(""),"\n" #4, 5, 6, , m
    print arr[3] ,"\n" #打印3号索引位置元素 #nil

    arr.delete_at(3#删除3号索引位置元素
    print arr.join(""),"\n" #4, 5, 6, m

    arr[2] = ["a","b","c"#把2号索引位置元素赋值为["a","b","c"]
    print arr.join(""),"\n" #4, 5, a, b, c, m
    print arr[2].join(",") ,"\n" #打印2号索引位置元素 #a,b,c

    arr[0..1] = [7,"h","b"#把0..1号元素替换为7,"h","b"
    print arr.join(""),"\n" #7, h, b, a, b, c, m

    arr.push("b" ) #加入元素"b"
    print arr.join(""),"\n" #7, h, b, a, b, c, m, b

    arr.delete(["a","b","c"] ) #删除元素["a","b","c"]
    print arr.join(""),"\n" #7, h, b, m, b

    arr.delete("b"#删除所有元素"b"
    print arr.join(""),"\n" #7, h, m

    arr.insert(3,"d"#在3号索引位置插入元素"d"
    print arr.join(""),"\n" #7, h, m, d

    arr<<"f"<<2 #加入元素"f";加入元素2
    print arr.join(""),"\n" #7, h, m, d, f, 2

    arr.pop #删除尾元素
    print arr.join(""),"\n" #7, h, m, d, f

    arr.shift #删除首元素
    print arr.join(""),"\n" #h, m, d, f

    arr.clear #清空数组arr
    print arr.join(""),"\n" 

    #获取新数组
    a=%W(a b c d e f g h i j k)
    p a #=>["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"]
    a2=a.values_at(1,3,5) #获取指定索引数组元组,构建一个新的数组
    p a2 #=>["b", "d", "f"]
     
    #数组运算
    aaaa=["aa",4,5,"bb"]
    bbbb=[4,1,3,2,5]
    print (aaaa + bbbb).join(" ") ,"\n" #aa 4 5 bb 4 1 3 2 5
    print (aaaa * 2).join(" ") ,"\n" #aa 4 5 bb aa 4 5 bb
    print (bbbb - aaaa).join(" ") ,"\n" #1 3 2

    #并运算;交运算

    print (aaaa | bbbb).join(",") ,"\n" #aa,4,5,bb,1,3,2
    print (aaaa & bbbb).join(",") ,"\n" #4,5

    a11=[1,2,3]
    a12=[3,4,5]

    #获取数组的并集
    a13=a11|a12
    p a13 #=>[1, 2, 3, 4, 5]

    #获取数组的交集
    a14=a11&a12
    p a14 #=>[3]

    #获取差集
    a15=a11-a12
    p a15 #=>[1, 2]

    #删除重复的元组
    a=[1,2,3,4,3,2,1]
    b= a.uniq
    p a #=>1, 2, 3, 4, 3, 2, 1]
    p b #=>1, 2, 3, 4]
    b=a.uniq! #uniq!会直接从数组中删除重复的元素
    p a #=>1, 2, 3, 4]
    p b #=>1, 2, 3, 4]


    #排序;倒置

    print bbbb.sort().join(",") ,"\n" #1,2,3,4,5
    print aaaa.reverse.join(",") ,"\n" #bb,5,4,aa
     
    #collect方法 以数组的形式返回操作结果
    a=%w(foo nbar nbuz)
    b=a.collect{|i| i.upcase}
    p b #=>["FOO", "NBAR", "NBUZ"]
     

    #数组初始化,如果数组元素是对象或者hash对象,应当使用指定的block作为数组初始化元素
    a=Array.new(3,[0,0])
    p a #=>[[0, 0], [0, 0], [0, 0]]
    a[0][1]=1
    p a #=>[[0, 1], [0, 1], [0, 1]],this result is‘t what we expect.

    a=Array.new(3){[0,0]}
    p a #=>[[0, 0], [0, 0], [0, 0]]
    a[0][1]=1
    p a #=>[[0, 1], [0, 0], [0, 0]]

  • 相关阅读:
    12月11日,12月12日登陆注册页面的进度
    11月28日进度
    11.23JavaScript学习打卡
    11.21,11.22HTML笔记整理
    11.19打卡,HTML学习笔记整理
    select into from 与 insert into select 区别
    解决Cookie乱码
    COOKIE传值
    实现鼠标穿透窗体
    监视鼠标点击了左键还是右键
  • 原文地址:https://www.cnblogs.com/jeriffe/p/2333117.html
Copyright © 2011-2022 走看看