For loop Julia-for循环中的上一个值和下一个值

For loop Julia-for循环中的上一个值和下一个值,for-loop,julia,For Loop,Julia,在Julia中,有没有一种方法可以对循环中的上一个值和下一个值进行操作?我从Julia的文档中找不到任何答案 例如: List1 = ["a", "b", "c"] for letter in List1 println(previous letter) end 这个循环在“b”上运行时会产生“a”等。我想我自己找到了一种方法: List1 = ["a", "b", "c"] for letter in List1 if !(findn(List1 .== letter) ==

在Julia中,有没有一种方法可以对循环中的上一个值和下一个值进行操作?我从Julia的文档中找不到任何答案

例如:

List1 = ["a", "b", "c"]
for letter in List1
   println(previous letter)
end

这个循环在“b”上运行时会产生“a”等。我想我自己找到了一种方法:

List1 = ["a", "b", "c"]
for letter in List1
    if  !(findn(List1 .== letter) == [1])
        println("The previous letter of ", letter, " is ", List1[findn(List1 .== letter)-1])
    end
end
输出:

The previous letter of b is String["a"]
The previous letter of c is String["b"]

现在唯一的问题是,结果是某种字符串数组。

您可以使用
枚举
函数来获取上一个索引,例如:

julia>list1=[“a”、“b”、“c”]
三元素数组{String,1}:
“a”
“b”
“c”
julia>枚举(列表1)
枚举{Array{String,1}}([“a”,“b”,“c”])
朱莉娅>收集(ans)
三元素数组{Tuple{Int64,String},1}:
(1,“a”)
(2,“b”)
(3,“c”)
julia>函数prev(列表::向量{String})
枚举=枚举(列表)
用于枚举中的(索引、元素)
如果索引=1
持续
其他的
println(“$element的前一个字母是$(list[index-1]))
结束
结束
结束
prev(带1方法的通用函数)
julia>prev(列表1)
b的前一个字母是a。
c前面的字母是b。

另一种方法是使用IterTools.jl包中的
分区
迭代器:

using IterTools

List1 = ["a", "b", "c"];
for (prev,next) in partition(List1,2,1)
    @show prev
end
给出:

prev = "a"
prev = "b"

next
具有当前迭代的值(即
“b”
“c”
),循环跳过第一个值的迭代(没有
prev
)。

不会使简单的事情复杂化:

List1 = ["a", "b", "c"]

for i = 2:length(List1)
    println("The previous letter of $(List1[i]) is $(List1[i-1])")
end 
产出:

The previous letter of b is a
The previous letter of c is b

在将循环执行为空字符串值之前,可能需要初始化“previous”变量。对于第一个循环迭代,没有“previous”值。我喜欢这个解决方案,因为它对于任何(几乎)任何语言的人来说都是可以立即理解的。