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]]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM