julia - Julia 中的列表推导和元组

标签 julia list-comprehension

我正在尝试在 Julia 中执行此 Python 代码的功能。 (从两个列表中找出组合值大于 7 的所有对。)

#Python    
def sum_is_large(a, b):
    return a + b > 7

l1 = [1,2,3]
l2 = [4,5,6]
l3 = [(a,b) for a in l1 for b in l2 if sum_is_large(a, b)]
print(l3)

没有if用于 Julia 中的列表推导。如果我使用 filter() ,我不确定我是否可以传递两个参数。所以我最好的建议是:
#Julia
function sum_is_large(pair)
    a, b = pair
    return a + b > 7 
end

l1 = [1,2,3]
l2 = [4,5,6]

l3 = filter(sum_is_large, [(i,j) for i in l1, j in l2])
print(l3)

我不觉得这很吸引人。所以我的问题是,在 Julia 中有没有更好的方法?

最佳答案

Guards (if) 现在在 Julia v0.5 中可用(目前处于发布候选阶段):

julia> v1 = [1, 2, 3];

julia> v2 = [4, 5, 6];

julia> v3 = [(a, b) for a in v1, b in v2 if a+b > 7]
3-element Array{Tuple{Int64,Int64},1}:
 (3,5)
 (2,6)
 (3,6)

请注意,生成器现在也可用:
julia> g = ( (a, b) for a in v1, b in v2 if a+b > 7 )
Base.Generator{Filter{##18#20,Base.Prod2{Array{Int64,1},Array{Int64,1}}},##17#19}(#17,Filter{##18#20,Base.Prod2{Array{Int64,1},Array{Int64,1}}}(#18,Base.Prod2{Array{Int64,1},Array{Int64,1}}([1,2,3],[4,5,6])))

关于julia - Julia 中的列表推导和元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337988/

相关文章:

python - 如何在列表理解中使用多个条件子句?

python - 如何在不使用循环的情况下反转 Python 中列表的顺序?

python - 列出字典值的理解

multithreading - Julia 多线程 "broadcast return"

julia - 为什么使用范围数组不能正确迭代这些值?

methods - 如何向 Julia 中的现有函数添加方法?

julia - 声明并初始化3维数组

arrays - 向量化乘法 : Multiply two vectors in Julia, 按元素

python-3.x - pandas 列中列表中元素的值计数

python - 有没有办法使用列表理解来计算特定条件下按元素分组的频率,但不计算其他元素的频率?