Arrays Julia等价于Ruby';各有各的缺点

Arrays Julia等价于Ruby';各有各的缺点,arrays,iterator,julia,Arrays,Iterator,Julia,在Ruby中,有一个方法each_cons,可用于迭代给定大小的连续组。比如说, irb(main):001:0> [4, 7, 6, 1, 0, 3].each_cons(2) { |x| p x } [4, 7] [7, 6] [6, 1] [1, 0] [0, 3] => nil 这里我们从输入数组中选择并打印每一个连续的元素对 朱莉娅怎么会这样 可以这样定义函数: 函数eachcons(x::数组{Any,1},n::Int) L=长度(x) (L)≤ 1 | | n>L)

在Ruby中,有一个方法
each_cons
,可用于迭代给定大小的连续组。比如说,

irb(main):001:0> [4, 7, 6, 1, 0, 3].each_cons(2) { |x| p x }
[4, 7]
[7, 6]
[6, 1]
[1, 0]
[0, 3]
=> nil
这里我们从输入数组中选择并打印每一个连续的元素对

朱莉娅怎么会这样

可以这样定义函数:

函数eachcons(x::数组{Any,1},n::Int)
L=长度(x)
(L)≤ 1 | | n>L)和&return nothing#匹配Ruby的行为
返回[x[i-n+1:i]表示i=n:L]
结束

有比这个自定义函数更好或更惯用的方法吗?

对于预先制作的解决方案,包中总是有
分区
函数。函数可以从数组中返回n个连续元素的元组:

julia> using Iterators
INFO: Precompiling module Iterators...

julia> A = [4, 7, 6, 1, 0, 3]

julia> for pair in Iterators.partition(A, 2, 1)
           println(pair)
       end
(4,7)
(7,6)
(6,1)
(1,0)
(0,3)

对于预先制作的解决方案,包中总是有
分区
函数。函数可以从数组中返回n个连续元素的元组:

julia> using Iterators
INFO: Precompiling module Iterators...

julia> A = [4, 7, 6, 1, 0, 3]

julia> for pair in Iterators.partition(A, 2, 1)
           println(pair)
       end
(4,7)
(7,6)
(6,1)
(1,0)
(0,3)

Iterators.partition(…)
中的第三个参数消失了,真是遗憾。未来版本中的新版本可能是:

Iterators.partition(enum, 3, advance = 1)
总之,目前的解决办法是:

julia> zip(enum, enum[2:end], enum[3:end])

Iterators.partition(…)
中的第三个参数消失了,真是遗憾。未来版本中的新版本可能是:

Iterators.partition(enum, 3, advance = 1)
总之,目前的解决办法是:

julia> zip(enum, enum[2:end], enum[3:end])

请注意,从技术上讲,给定的函数更像是执行
x.each_cons(n).to_a
but“\_(ツ)_/“请注意,从技术上讲,给定的函数更像是执行
x.each_cons(n).to_a
but”\_(ツ)_/''我总是忘记迭代器。我想知道为什么这些函数没有包含在Base中。哦,好吧。谢谢你的帮助。在创建此答案和Julia 1.5.2之间的某段时间,迭代器.partition失去了它的三个参数形式,现在只接受两个参数,所以此答案不再有效。我总是忘记迭代器。我想知道为什么会出现这些函数不包含在Base中。哦,好吧。谢谢您的帮助。从创建此答案到Julia 1.5.2,Iterators.partition失去了它的三参数形式,现在只接受两个参数,所以此答案不再有效。