Julia中该列表推导式是否有简写形式(如使用filter)?
Julia中筛选数组元素的简写方式
你给出的代码行a = [addresses[i] for i in eachindex(more5) if true == more5[i]]确实有多种更简洁的写法,以下是几种常用方式:
简化列表推导式
因为true == more5[i]等价于直接使用more5[i](布尔值本身即可作为判断条件),所以可以简化为:a = [addresses[i] for i in eachindex(more5) if more5[i]]布尔数组直接索引(最推荐)
Julia支持用布尔数组作为索引直接筛选元素,这是最简洁高效的写法:a = addresses[more5]这种方式直接利用Julia的数组索引特性,不需要额外的循环或函数调用,性能最优。
使用filter函数
如果一定要用filter,可以通过zip将addresses和more5配对,过滤出布尔值为true的配对项后提取地址:a = first.(filter(pair -> pair[2], zip(addresses, more5)))
内容的提问来源于stack exchange,提问作者Vinod
相关产品推荐
相关产品推荐

