ruby之旅之数组

本文详细介绍了Ruby编程中的数组操作,包括创建、增加、删除、修改和查找元素的各种方法,如Array.new、Array[]、concat、delete_at、push、pop、insert、shift、sort等,帮助开发者全面掌握Ruby数组的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组:

①Ruby 数组可存储诸如 String、 Integer、 Fixnum、 Hash、 Symbol 等对象,甚至可以是其他 Array 对象。
②Ruby 数组不需要指定大小,当向数组添加元素时,Ruby 数组会自动增长

1.数组的创建

(1.1)通过 Array.new 创建
①创建一个不指定大小的空数组
arr = Array.new
②创建一个指定大小的空数组
arr = Array.new(20)
③创建数组的同时给每个数组元素赋值
【case1】只能初始化n个相同的值

代码如下:
	city_name = Array.new(4,"北京") 
	p "#{city_name}"
输出结果:
	["北京", "北京", "北京", "北京"]

【case2】使用带有 new 的块,每个元素使用块中的计算结果来填充

代码如下:
	nums = Array.new(10){|i| i=(i+1)*2}
	puts  "#{nums}"
输出结果:
	[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

(1.2)通过Array.[] 创建

代码如下:
	city_name = Array.[]("北京","上海","广州","深圳")
	puts "#{city_name}"
输出结果:
	["北京", "上海", "广州", "深圳"]

(1.3)通过Array[] 创建
代码如下:
names = Array[“Peking University”,“Tsinghua University”,“Sun Yat-sen University”]
puts names
输出结果:
[“Peking University”, “Tsinghua University”, “Sun Yat-sen University”]
(1.4)通过*() 创建 【注】通过此方法创建括号内必须是个范围

代码如下:
	words = *("aaa".."aah")
	puts "#{words}"
输出结果:
	["aaa", "aab", "aac", "aad", "aae", "aaf", "aag", "aah"]

(1.5)通过[] 创建 【推荐使用】

代码如下:
	traffic_tool = ["airplane","train","bus"]
	puts "#{traffic_tool}"
输出结果:
	["airplane", "train", "bus"]

(1.6)通过%w创建一个数组

代码如下:
	arr_1 = %w {bgp isis ospf}
	p arr_1
输出结果:
	["bgp", "isis", "ospf"]

2.数组的【增】

(2.1)array + other_array 返回一个新的数组,新数组通过连接两个数组产生第三个数组创建的。

代码如下:
	tiangan_1 = ["甲","乙","丙、","丁","戊"]
	tiangan_2 = ["己","庚","辛","壬(rén)","癸(guǐ)"]
	all_tiangan = tiangan_1+tiangan_2
	p all_tiangan
输出结果:
	["甲", "乙", "丙、", "丁", "戊", "己", "庚", "辛", "壬(rén)", "癸(guǐ)"]

(2.2)array << obj 把给定的对象附加到数组的末尾。该表达式返回数组本身,所以几个附加可以连在一起。

代码如下:
	arr_1 = ["可叹停机德","堪怜咏絮才","玉带林中挂"]
	obj_1 = ["玉带林中挂","金簪雪里埋"]
	arr_1 << obj_1
	p arr_1
输出结果:
	["可叹停机德", "堪怜咏絮才", "玉带林中挂", ["玉带林中挂", "金簪雪里埋"]]

(2.3)array.concat(other_array)
追加 other_array 中的元素到 self 中

代码如下:
	arr_1 = %w{才自精明志自高 生于末世运偏消}
	arr_2 = %w{清明涕泣江边望 千里东风一梦遥}
	p arr_1.concat(arr_2)
输出结果:
	["才自精明志自高", "生于末世运偏消", "清明涕泣江边望", "千里东风一梦遥"]

(2.4)array.push(obj, …)
把给定的 obj 附加到数组的末尾。该表达式返回数组本身,所以几个附加可以连在一起

代码如下:
	arr01 = %w{一而十 十而百}
	obj01 = "百而千"
	obj02 = "千而万"
	arr01.push(obj01,obj02)
	p arr01
输出结果:
	["一而十", "十而百", "百而千", "千而万"]

3.数组的【删】

(3.1)array - other_array 返回一个新的数组,新数组是从初始数组中移除了在 other_array 中出现元素。

代码如下:
	arr_1 = ["toe","foot","shank","thigh","pea","banana"]
	arr_2 = ["pea","banana","orange"]
	p arr_1-arr_2
输出结果:
	["toe", "foot", "shank", "thigh"]

(3.2)array | other_array 通过把 other_array 加入 array 中,移除重复项,返回一个新的数组【去重】。

代码如下:
	arr_1 = ["10","20","30","20","40"]
	arr_2 = ["30","60","50"]
	arr_3 = arr_1 | arr_2
	p arr_3
输出结果:
	["10", "20", "30", "40", "60", "50"]

(3.3)array.clear
从数组中移除所有的元素

 代码如下:
	arr_1 = %w{二十年来辨是非 榴花开处照宫闱 三春争及初春景 虎兕相逢大梦归}
	len_1 = arr_1.length
	p "未做clear之前数组的长度#{len_1}"
	arr_1.clear
	len_2 = arr_1.length
	p "做完clear之后数组的长度#{len_2}"
 输出结果:
	"未做clear之前数组的长度4"
	"做完clear之后数组的长度0"

(3.4)array.delete(obj)
array.delete(obj) { block }
从 self 中删除等于 obj 的项。如果未找到相等项,则返回 nil。如果未找到相等项且给出了可选的代码 block,则返回 block 的结果。

 代码如下:
	arr_1 = %w{10.1.1.1 10.1.2.1 10.1.2.4}
	arr_2 = %w{10.1.1.1 10.1.2.1 10.1.2.4}
	str_3 = "10.1.1.1"
	str_4 = "10.1.5.1"
	p arr_1.delete(str_3),arr_1
	p arr_2.delete(str_4)
	p arr_2.delete(str_4){"10.1.5.1删除成功"}
	
 输出结果:
	"10.1.1.1"
	["10.1.2.1", "10.1.2.4"]
	nil
	"10.1.5.1删除成功"

(3.5)array.delete_at(index)
删除指定的 index 处的元素,并返回该元素。如果 index 超出范围,则返回 nil

 代码如下:
	arr_1 = %w{富贵又何为 襁褓之间父母违 展眼吊斜辉 湘江水逝楚云飞}
	p arr_1.delete_at(1),arr_1.delete_at(4)
 输出结果:
	"襁褓之间父母违"
	nil

(3.6)array.delete_if { |item| block }
当 block 为 true 时,删除 self 的每个元素
array.rej

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值