我正在尝试在 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/