范围 #
一、范围基础 #
1.1 创建范围 #
使用:运算符创建范围:
julia
r1 = 1:5
r2 = 1:10
r3 = 'a':'z'
r4 = 0.0:0.1:1.0
1.2 范围类型 #
julia
typeof(1:5)
typeof(1:2:10)
typeof(0.0:0.1:1.0)
typeof('a':'z')
1.3 范围特点 #
范围是惰性的,不存储所有元素:
julia
r = 1:10^9
length(r)
first(r)
last(r)
二、范围类型 #
2.1 UnitRange #
步长为1的范围:
julia
r = 1:10
typeof(r)
step(r)
2.2 StepRange #
自定义步长的范围:
julia
r = 1:2:10
typeof(r)
step(r)
collect(r)
2.3 StepRangeLen #
浮点数范围:
julia
r = 0.0:0.1:1.0
typeof(r)
step(r)
length(r)
collect(r)
2.4 LinRange #
线性间隔范围:
julia
r = LinRange(0, 1, 11)
typeof(r)
collect(r)
三、范围操作 #
3.1 基本属性 #
julia
r = 1:2:10
first(r)
last(r)
step(r)
length(r)
minimum(r)
maximum(r)
3.2 索引访问 #
julia
r = 1:2:10
r[1]
r[3]
r[end]
r[2:4]
3.3 包含检查 #
julia
r = 1:2:10
5 in r
6 in r
in(5, r)
in(6, r)
3.4 范围运算 #
julia
r1 = 1:5
r2 = 3:7
intersect(r1, r2)
union(r1, r2)
setdiff(r1, r2)
四、范围迭代 #
4.1 for循环 #
julia
for i in 1:5
println(i)
end
for i in 1:2:10
println(i)
end
4.2 枚举 #
julia
for (i, x) in enumerate(1:3:10)
println("$i: $x")
end
4.3 迭代器 #
julia
r = 1:5
iterate(r)
iterate(r, 1)
iterate(r, 2)
五、范围应用 #
5.1 数组索引 #
julia
arr = [10, 20, 30, 40, 50]
arr[1:3]
arr[2:2:end]
arr[end:-1:begin]
5.2 数组创建 #
julia
[i^2 for i in 1:5]
[i * j for i in 1:3, j in 1:3]
zeros(5)
ones(3, 3)
rand(2, 3)
5.3 循环计数 #
julia
for i in 1:100
if i % 10 == 0
println(i)
end
end
5.4 矩阵索引 #
julia
mat = [1 2 3; 4 5 6; 7 8 9]
mat[1:2, 2:3]
mat[:, 1]
mat[1, :]
六、范围函数 #
6.1 range函数 #
julia
range(1, length=5)
range(1, stop=10, length=5)
range(1, stop=10, step=2)
range(1, step=2, length=5)
6.2 OneTo #
julia
r = Base.OneTo(5)
typeof(r)
collect(r)
6.3 axes #
julia
arr = [1 2 3; 4 5 6]
axes(arr)
axes(arr, 1)
axes(arr, 2)
6.4 eachindex #
julia
arr = [10, 20, 30, 40, 50]
for i in eachindex(arr)
println("$i: $(arr[i])")
end
七、范围与数学 #
7.1 等差数列 #
julia
r = 1:5
sum(r)
mean(r)
7.2 等比数列 #
julia
[2^i for i in 0:5]
7.3 线性空间 #
julia
using LinearAlgebra
r = LinRange(0, 2π, 100)
sin.(r)
八、实践练习 #
8.1 练习1:求和 #
julia
function sum_range(start, stop, step=1)
sum(start:step:stop)
end
sum_range(1, 100)
sum_range(1, 100, 2)
8.2 练习2:生成序列 #
julia
function fibonacci_range(n)
a, b = 0, 1
result = Int[]
for _ in 1:n
a, b = b, a + b
push!(result, a)
end
return result
end
fibonacci_range(10)
8.3 练习3:网格坐标 #
julia
function grid_coordinates(x_range, y_range)
[(x, y) for x in x_range, y in y_range]
end
grid_coordinates(1:3, 1:2)
8.4 练习4:时间序列 #
julia
function time_series(start_time, end_time, step_seconds)
start_seconds = start_time.hour * 3600 + start_time.minute * 60 + start_time.second
end_seconds = end_time.hour * 3600 + end_time.minute * 60 + end_time.second
times = []
for s in start_seconds:step_seconds:end_seconds
h, s = divrem(s, 3600)
m, s = divrem(s, 60)
push!(times, (hour=h, minute=m, second=s))
end
return times
end
using Dates
time_series(Time(9, 0, 0), Time(9, 30, 0), 300)
九、总结 #
本章我们学习了:
- 范围创建:使用
:运算符 - 范围类型:UnitRange、StepRange、StepRangeLen
- 范围操作:索引、包含检查
- 范围迭代:for循环和枚举
- 范围应用:数组索引、循环计数
- 范围函数:range、axes、eachindex
接下来让我们学习Julia的运算符!
最后更新:2026-03-27