数组操作

1. 数组简介

数组是编程中常用的数据结构,用于存储一组有序的元素。在 Ruby 中,数组可以包含不同类型的数据,如整数、字符串、对象等。数组的一个重要特性是它们可以动态调整大小,这意味着你可以随时添加或删除元素。

1.1 创建数组

在 Ruby 中,你可以使用方括号 [] 来创建一个数组。数组中的元素用逗号分隔。

# 创建一个空数组
empty_array = []

# 创建一个包含多个元素的数组
fruits = ["apple", "banana", "cherry"]

1.2 访问数组元素

数组中的元素可以通过索引来访问,索引从 0 开始。

fruits = ["apple", "banana", "cherry"]

# 访问第一个元素
puts fruits[0]  # 输出: apple

# 访问最后一个元素
puts fruits[-1] # 输出: cherry

2. 数组的基本操作

2.1 添加元素

你可以使用 << 操作符或 push 方法向数组末尾添加元素。

fruits = ["apple", "banana"]

# 使用 << 添加元素
fruits << "cherry"

# 使用 push 添加元素
fruits.push("date")

puts fruits.inspect  # 输出: ["apple", "banana", "cherry", "date"]

2.2 删除元素

你可以使用 pop 方法从数组末尾删除元素,或使用 delete 方法删除指定元素。

fruits = ["apple", "banana", "cherry"]

# 删除最后一个元素
fruits.pop

# 删除指定元素
fruits.delete("banana")

puts fruits.inspect  # 输出: ["apple"]

2.3 修改元素

你可以通过索引直接修改数组中的元素。

fruits = ["apple", "banana", "cherry"]

# 修改第二个元素
fruits[1] = "blueberry"

puts fruits.inspect  # 输出: ["apple", "blueberry", "cherry"]

3. 数组的高级操作

3.1 数组迭代

Ruby 提供了多种迭代数组的方法,如 each、map、select 等。

fruits = ["apple", "banana", "cherry"]

# 使用 each 迭代数组
fruits.each do |fruit|
  puts fruit
end

# 使用 map 创建新数组
capitalized_fruits = fruits.map { |fruit| fruit.capitalize }
puts capitalized_fruits.inspect  # 输出: ["Apple", "Banana", "Cherry"]

# 使用 select 过滤数组
long_fruits = fruits.select { |fruit| fruit.length > 5 }
puts long_fruits.inspect  # 输出: ["banana", "cherry"]

3.2 数组排序

你可以使用 sort 方法对数组进行排序。

numbers = [3, 1, 4, 1, 5, 9]

# 升序排序
sorted_numbers = numbers.sort
puts sorted_numbers.inspect  # 输出: [1, 1, 3, 4, 5, 9]

# 降序排序
reverse_sorted_numbers = numbers.sort.reverse
puts reverse_sorted_numbers.inspect  # 输出: [9, 5, 4, 3, 1, 1]

3.3 数组连接

你可以使用 + 操作符或 concat 方法连接两个数组。

array1 = [1, 2, 3]
array2 = [4, 5, 6]

# 使用 + 连接数组
combined_array = array1 + array2
puts combined_array.inspect  # 输出: [1, 2, 3, 4, 5, 6]

# 使用 concat 连接数组
array1.concat(array2)
puts array1.inspect  # 输出: [1, 2, 3, 4, 5, 6]

4. 实践练习

4.1 练习1:统计数组中元素的频率

编写一个程序,统计数组中每个元素出现的频率,并输出结果。

def count_frequencies(array)
  frequencies = Hash.new(0)
  array.each { |element| frequencies[element] += 1 }
  frequencies
end

fruits = ["apple", "banana", "apple", "cherry", "banana", "apple"]
puts count_frequencies(fruits)  # 输出: {"apple"=>3, "banana"=>2, "cherry"=>1}

4.2 练习2:找出数组中的唯一元素

编写一个程序,找出数组中的唯一元素,并输出结果。

def unique_elements(array)
  array.uniq
end

numbers = [1, 2, 3, 2, 1, 4, 5, 4]
puts unique_elements(numbers).inspect  # 输出: [1, 2, 3, 4, 5]

5. 总结

数组是 Ruby 编程中非常强大的工具,掌握数组的基本操作和高级技巧对于编写高效、简洁的代码至关重要。通过本教程的学习,你应该能够熟练地创建、访问、修改、迭代和操作数组。继续练习和探索,你将能够更好地利用数组解决实际问题。