gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:37:38 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com