Je suis nouveau avec Julia. Je me demandais s'il était possible d'écrire sur une seule ligne à l'instruction {{X 0}} dans un tableau ou un ensemble dans Julia.
Par exemple, en python, je peux écrire une liste telle que
s = [1 if np.random.uniform() < 0.5 else 0 for i in range(10)]
Qui en Julia, si j'ai raison, devrait être un tableau comme celui-ci
s = []
for i in 0:10
if rand()<0.5
push!(s, 1)
else
push!(s, 0)
end
end
Je sais que je peux écrire le cycle for
sur une seule ligne, c'est-à-dire
s =[1 for i in 1:10]
Mais qu'en est-il de l'instruction if..else
?
4 réponses
Comme l'a suggéré @Guido, vous pouvez utiliser la compréhension de liste tout comme python, plus précisément:
s = [if rand() < 0.5 1 else 0 end for i in 1:10]
Notez que l'instruction if-else de julia a besoin d'un end
. je pense que c'est la même chose que d'utiliser map
:
map(x -> rand() < 0.5 ? 1 : 0, 1:10)
Idiomatique, ou plus rapide dans Julia:
convert(Vector{Int},rand(Bool,10))
Ou
1*rand(Bool,10)
Ou
1*(rand(10).<0.5)
Ou
ifelse(rand(Bool,10),0,1) // ifelse is a function and avoid CPU branching
Mon intuition est que les première et dernière versions sont les plus rapides.
Pour faire spécifiquement,
s = [1 if np.random.uniform() < 0.5 else 0 for i in range(10)]
Dans Julia, vous pouvez écrire,
s = [rand()<0.5?1:0 for i=1:10]
C'est ce qu'on appelle une liste de compréhension. Dans Julia, cela peut être fait en utilisant:
> [(x,y) for x=1:2, y=3:4]
2x2 Array{(Int64,Int64),2}:
(1,3) (1,4)
(2,3) (2,4)
Voir Compréhensions de listes imbriquées dans Julia pour plus d'informations
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.