【问题标题】:array/list manipulation in JuliaJulia 中的数组/列表操作
【发布时间】:2021-02-18 06:29:51
【问题描述】:

我不熟悉 Julia 表示法,并且来自 python。

在 python 中,我的代码如下所示:

x = [0,1,2]
y = ([3,4, 5], [6,7,8])  # usually retuned by a function call

# then I stack the list:
z = [x, *y]

然后得到:

z = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

但是,在 julia 中,我不确定如何使用 * 技巧,我正在使用一种繁琐的方法来定义所有变量:

x = [0,1,2]
y = ([3,4, 5], [6,7,8])  # usually retuned by a function call


z = x
z = hcat(z, y[1])
z = hcat(z, y[2])

有什么更有效的方法来写下来?这里这个例子很简单,但是我要处理更多复杂的数据,像这样做 hcat 感觉很不对劲,而且很耗时。

【问题讨论】:

    标签: julia


    【解决方案1】:

    在 Julia 中,您将使用 ... 来解压向量,而不是 Python 中使用的 *

    julia> [x, y...]
    3-element Vector{Vector{Int64}}:
     [0, 1, 2]
     [3, 4, 5]
     [6, 7, 8]
    

    【讨论】:

    • 我明白了!非常感谢您的回答
    • 你怎么看这个?我通常认为[x, *y] 中的星星的意思类似于"paste me right here",但在Julia 中,splat 出现在y 之后而不是x 之后,我想知道对splat 的作用的口头描述是什么在这里...谢谢! (我的意思是[x, ...y] 会很容易理解,甚至[x...y]
    • 假设 y 是一个具有三个元素的 AbstractVectory[1]y[2]y[3]。在那种情况下,写y... 100% 等同于写y[1], y[2], y[3]。我读了它“在这里打包我的y”。要测试我的解释,请尝试运行[x, y[1], y[2]] == [x, y...]
    • 啊,不错,谢谢 Przemyslaw。 “在这里解开我的 y”,这行得通。现在我知道我会记住如何使用它而无需搜索帮助! :-)
    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多