Julia中使用for循环存储区间向量运算结果的问题
问题分析与解决方案
原代码的核心问题
你当前的代码中,变量ol每次循环都会被重新赋值为单个区间除法结果,最终仅保留最后一次循环的计算值,完全没有收集所有16个运算结果;另外手动维护计数器kk属于冗余操作,完全没必要。
通用实现代码
方式1:嵌套循环手动收集结果(直观易读)
using IntervalArithmetic # 任意长度的输入向量都适用 α = [(200..225); (225..250); (250..275); (275..300)] γ = [(2..2.25); (2.25..2.5); (2.5..2.75); (2.75..3)] # 初始化空向量存储所有结果,指定类型提升性能 result = Vector{Interval{Float64}}() # 遍历所有α和γ的元素组合,将除法结果加入向量 for a in α for g in γ push!(result, a / g) end end @show length(result) # 输出16,符合预期 @show result
方式2:列表推导式(Julia风格,简洁高效)
using IntervalArithmetic α = [(200..225); (225..250); (250..275); (275..300)] γ = [(2..2.25); (2.25..2.5); (2.5..2.75); (2.75..3)] # 一行生成所有元素组合的除法结果向量,支持任意长度输入 result = [a / g for a in α for g in γ] @show length(result) # 输出16 @show result
关键说明
- 两种实现都支持任意长度的输入向量,不管α和γ是4个元素还是更多/更少,代码都能自动生成对应数量的结果(总元素数为
length(α) * length(γ))。 - 结果向量的元素顺序:先取α的第一个元素,与γ的所有元素依次做除法;再取α的第二个元素,重复该过程,以此类推。
内容的提问来源于stack exchange,提问作者Kanishk Sharma
相关产品推荐
相关产品推荐

