Tout d'abord, désolé pour le titre confus.
Ce que je veux faire est de convertir C'est-à-dire que seuls les index de la première liste auront une valeur Je sens Est une solution vraiment simple, mais je suis assez nouveau à la fois à Mathematica et à la programmation fonctionnelle. Je pourrais le faire itérativement, dans une boucle, mais il doit y avoir quelque chose qui fonctionne avec la liste dans son ensemble. Droit? :) p> Merci pour votre aide. P> Malheureusement, cela ne fonctionne pas avec {1, 4, 9} code> à: p>
true code>, le reste sera
false code>. p>
{1,4,9} -> Â true code>, mais fonctionnerait avec
{1 -> True, 4 -> True, 9 -> True} Code>. Mais je ne sais pas comment arriver à cela ... p>
ReplacePart[Table[False, {x, Max[first]}], Table[x -> True, {x, first}]]
3 Réponses :
Voici une approche simple:
convertIndices@{1, 4, 9} Out[2]= {True, False, False, True, False, False, False, False, True}
Liste [[PREMIER]] = TRUE CODE> Jamais survenu pour moi. C'est la chose que je cherche. :) Simple, beau. Merci!
Je l'ai écrit ci-dessus comme une fonction commode pour que tout ce que vous avez à faire est de passer une liste. S'il vous plaît voir mon édition.
+1, certains modes de pensée sont persistants et je n'aurais jamais envisagé Liste [[premier]] = true code> car je ne pense pas à définir des éléments individuels d'une liste
code >.
Et bien sûr, il y a une chance de me rattraper. : P
Maintenant, tout ce que j'ai besoin de faire est de me débarrasser de M.Wizard et je serai au sommet de la balise pour ce mois: D
En fait, j'aurais utilisé la réponse de Yoda moi-même, mais voici une alternative: ou celui-ci: p> Les deux ont L'avantage qu'ils ignorent l'étape d'initialisation CONDUCTARRAY CODE> de YODA. P> P>
Je ne l'appellerais pas vraiment un avantage i>. Essayez premier = {1,4,10 ^ 6} code>. Sur ma machine, vos solutions prennent respectivement ~ 2 et ~ 1,5S, alors que la mine ne prend que ~ 0,035.
@Yoda je ne parlais pas de vitesse d'exécution mais je ne parlais pas de taper des efforts ;-)
J'utiliserais SPARSARRAY code> pour cette opération. À mon avis, il est très facile de comprendre, et il est également efficace, en particulier lorsqu'un faible pourcentage d'indices est vrai.
#==1 & /@ SparseArray[List /@ true -> 1]