gpt4 book ai didi

if-statement - 如何在列表理解中使用 if-else

转载 作者:行者123 更新时间:2023-12-05 08:45:14 26 4
gpt4 key购买 nike

我想比较两个列表理解的执行时间,一个使用 if-else 关键字,另一个使用三元运算符。

arr = [5, 8, 12, 17, 24, 42];

function squares_and_cubes(array)
return [ x%2 ==0 ? x^2 : x^3 for x in array]
end

function squares_and_cubes_if_else(array)
[ x^2 if (x%2==0) else x^3 end for x in array]
end
@time squares_and_cubes(arr)
@time squares_and_cubes_if_else(arr)

但是,我收到以下错误消息 ERROR: syntax: invalid comprehension syntax当尝试执行 [ x^2 if (x%2==0) else x^3 end for x in arr] 时。作为 Julia 新手,我无法弄清楚这种语法有什么问题 - 我使用的是 v 1.7。

最佳答案

您似乎想在这里使用类似 Python 的 if-else 语法。在 Julia 中是:

julia> arr = [1, 2, 3, 4];

julia> [if (x%2==0) x^2 else x^3 end for x in arr]
4-element Vector{Int64}:
1
4
27
16

执行时间应该没有差异,因为两者都被解析为基本相同的抽象代码,并将生成完全相同的机器代码。 (不过,为此目的,三元运算符更具可读性和惯用性。)

但如果您确实想放纵自己的好奇心,请确保在计时函数之前运行一次函数,以避免测量编译时间。

关于if-statement - 如何在列表理解中使用 if-else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73463668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com