Julia 1.7列表推导式用if-else报错:无效语法问题求助
问题原因与解决方法
你的语法错误源于列表推导式中if-else语句的顺序不正确。在Julia中,使用完整的if-else块编写条件性元素推导时,必须以if关键字开头,而非先写表达式再跟条件。
修正后的代码
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) # 修正:将if放在表达式最前面 [if x%2 == 0 x^2 else x^3 end for x in array] end @time squares_and_cubes(arr) @time squares_and_cubes_if_else(arr)
语法说明
- 三元运算符版本(
condition ? expr1 : expr2)的结构是条件在前,后接两个分支,适合简单的二选一逻辑。 - 完整if-else块版本的结构是if关键字开头,依次为条件、分支1、else、分支2、end,这是Julia中块级条件语句在推导式里的正确写法。
修正后两个函数均可正常运行,你可以通过@time对比执行效率。实际上Julia会对这两种写法做类似优化,二者的执行时间应该相差无几。
内容的提问来源于stack exchange,提问作者ConsistentC
相关产品推荐
相关产品推荐

