一、Array的过滤
模式:
list =[-3,-2,-1,0,1,2,3,4,5,6,7,8];
a =[x^2+2*x+3 for x in list ]; # 不过滤
b =[x^2+2*x+3 for x in list if x>0] # 后置过滤
c =[y =x>0? x^2+2*x+3 : 0 for x in list ] # 前置过滤
d =[y =x>2? x^2+2*x+3 : 2*x for x in list if x>0 ] # 前后同时过滤
e =[if x <0 abs(x) elseif x<2 2*x else x*5 end for x in list ] # 复杂情况的前置过滤
f =[if x <0 abs(x) elseif x<2 2*x else x*5 end for x in list if x>-2] #复杂情况的前后置过滤
看结果:
julia> list =[-3,-2,-1,0,1,2,3,4,5,6,7,8];
julia> a =[x^2+2*x+3 for x in list ]
12-element Array{Int64,1}:
6
3
2
3
6
11
18
27
38
51
66
83
julia> c =[y =x>0? x^2+2*x+3 : 0 for x in list ]
12-element Array{Int64,1}:
0
0
0
0
6
11
18
27
38
51
66
83
julia> d =[y =x>2? x^2+2*x+3 : 2*x for x in list if x>0 ]
8-element Array{Int64,1}:
2
4
18
27
38
51
66
83
julia> e =[if x <0 abs(x) elseif x<2 2*x else x*5 end for x in list ]
12-element Array{Int64,1}:
3
2
1
0
2
10
15
20
25
30
35
40
julia> f =[if x <0 abs(x) elseif x<2 2*x else x*5 end for x in list if x>-2]
10-element Array{Int64,1}:
1
0
2
10
15
20
25
30
35
40
二、延伸的应用
比如:sum
julia>sum(x for x in a if x>1) # 2,3,4 =>sum
9