我是朱莉娅的新人。如果有可能在一行中用if
语句写入数组或Julia中的一组,我就会徘徊。
例如在python中我可以编写一个列表,例如
s = [1 if np.random.uniform() < 0.5 else 0 for i in range(10)]
在朱莉娅,如果我是对的,应该是这样的数组
s = []
for i in 0:10
if rand()<0.5
push!(s, 1)
else
push!(s, 0)
end
end
我知道我可以在一行中写for
个周期,即
s =[1 for i in 1:10]
但是if..else
声明呢?
答案 0 :(得分:3)
正如@Guido建议的那样,你可以像python一样使用列表理解,更具体地说:
s = [if rand() < 0.5 1 else 0 end for i in 1:10]
请注意,julia的if-else语句需要end
。我认为这与使用map
:
map(x -> rand() < 0.5 ? 1 : 0, 1:10)
答案 1 :(得分:2)
具体来说,
s = [1 if np.random.uniform() < 0.5 else 0 for i in range(10)]
在朱莉娅,你可以写,
s = [rand()<0.5?1:0 for i=1:10]
答案 2 :(得分:1)
这称为列表理解。在朱莉娅,这可以使用:
完成 > [(x,y) for x=1:2, y=3:4]
2x2 Array{(Int64,Int64),2}:
(1,3) (1,4)
(2,3) (2,4)
有关详细信息,请参阅Nested list comprehensions in Julia
答案 3 :(得分:0)
在Julia中惯用或更快:
convert(Vector{Int},rand(Bool,10))
或
1*rand(Bool,10)
或
1*(rand(10).<0.5)
或
ifelse(rand(Bool,10),0,1) // ifelse is a function and avoid CPU branching
我的直觉是第一版和最后一版是最快的。