【问题标题】:Is there a if-else list comprehension in JuliaJulia 中是否有 if-else 列表理解
【发布时间】:2020-02-29 01:47:49
【问题描述】:

我正在尝试以 Python 方式使用 zip,但在 Julia 中。给定两个列表:

a =[2;3;4;5;6]
b =[0;7;8;9;10]

我想创建以下列表理解,

c = [x for (x,y) in zip(a, b) if (x<y) else y]

返回c = [0;3;4;5;6]。相反,我得到了syntax: expected "]" 返回。

【问题讨论】:

  • 出于好奇,这在 Python 中有效吗?
  • @StefanKarpinski:不。在 Python 中编写此代码会失败,原因与在 Julia 中完全相同,但修复方法基本相同(尽管 Python 的三元运算符语法不同)。
  • Python 的三元运算符是 x if cond else y 而不是 cond ? x : y,所以正确的 Python 应该是 [x if x&lt;y else y for (x, y) in zip(a, b)]

标签: list conditional-statements julia list-comprehension


【解决方案1】:

你必须重写你的理解,使得条件在生成器的“主体”中:

c = [x < y ? x : y for (x, y) in zip(a, b)]

推导式中的if-条件目前纯粹是为了过滤(尽管可以添加您想要的含义)。

【讨论】:

  • 除了三元运算符,您还可以使用ifelse,它有时会更快(而且,您可以广播它!)。
猜你喜欢
  • 2011-03-17
  • 2018-04-27
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
相关资源
最近更新 更多