Initialisation de tableau multidimensionnelle Python sans boucle
Est-il un moyen en Python pour initialiser un tableau multidimensionnel /liste sans l'aide d'une boucle?
source d'informationauteur Leonid
Vous devez vous connecter pour publier un commentaire.
Sûr qu'il y est un moyen
ou
mais c'est horrible et inutile, de sorte que tout le monde utilise des boucles (généralement interprétations de la liste) ou numpy
En fonction de vos besoins réels, de facto, le package "standard" Numpy peut vous fournir exactement ce dont vous avez besoin.
Vous pouvez par exemple créer un tableau multidimensionnel avec
(initialisé avec des valeurs arbitraires) ou de créer les mêmes tableaux avec zéros partout avec
Numpy est très rapide, pour les opérations de matrice.
Sûr, vous pouvez faire
Je ne crois pas que c'est possible.
Vous pouvez faire quelque chose comme ceci:
pour créer une matrice 5x5, mais elle est répétée objets (que vous ne voulez pas). Par exemple:
Vous avez presque certainement besoin d'utiliser une sorte de boucle, comme dans:
La récursivité est votre ami 😀
Il est assez naïf de mise en œuvre, mais il fonctionne!
La suite de ne pas utiliser toutes les spéciales de la bibliothèque, ni eval:
et il ne crée pas dupliqué références:
Cela dépend de ce que vous ce que vous devez initialiser le tableau, mais bien sûr. Vous pouvez utiliser une liste de compréhension pour créer un 5×3 tableau, par exemple:
Oui, je suppose que cela a encore des boucles—tout se fait en une seule ligne, ce qui je suppose est le sens de votre question?
Si vous faites numérique de travail à l'aide de Numpy, quelque chose comme
Python n'a pas tableaux. Il a d'autres types de séquence allant de listes de dictionnaires sans oublier les jeux - celui de droite dépend de vos besoins spécifiques.
En supposant que votre "tableau" est en fait une liste, et "initialiser" signifie attribuer une liste de listes de NxM éléments, vous pouvez (pseudo-code):
Vous dites que vous ne voulez pas de boucle, et que les règles sur les deux premiers points, mais pourquoi?
Vous dites aussi que vous ne voulez pas écrire la chose vers le bas (en réponse à JacobM), alors comment voulez-vous vraiment le faire? Je ne connais pas d'autre façon d'obtenir une structure de données sans générer en petits morceaux (en boucle) ou explicitement écrit dans un langage de programmation.
Également garder à l'esprit qu'un initialisé mais la liste vide n'est pas mieux que pas de liste, à moins que vous mettez de données. Et vous n'avez pas besoin de l'initialiser avant de mettre des données...
Si ce n'est pas un exercice théorique, vous êtes probablement se poser la mauvaise question. Je vous propose de vous expliquer ce que vous devez faire avec ce tableau.
Puis
Vous pouvez le faire de cette manière:
Premier sans utiliser de boucle:
Ensuite à l'aide de simples inline compréhension de liste:
Vous pouvez utiliser N-dimensions tableau (ndarray). Voici le lien vers la documentation. http://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html