8
votes

Comment trier un tableau entier sur place à Python?

Comment trier un tableau entier ( pas une liste) sur place à Python 2.6? Existe-t-il une fonction appropriée dans l'une des bibliothèques standard?

En d'autres termes, je recherche une fonction qui ferait quelque chose comme ceci: xxx

merci à avance!


3 commentaires

Pourquoi avez-vous exclu l'utilisation d'une liste? Avez-vous profilé et avez-vous trouvé qu'il manque? Si vous devez utiliser un tableau et que vous en avez besoin triés, je suggère d'utiliser NUMPY, qui a une méthode de tri pour les tableaux.


@Steven oui, je l'ai profilé. Je travaille sur de grandes collections d'entiers qui correspondent à peine à la RAM. Les listes d'entiers sont au moins 3 fois plus grandes que les réseaux d'entiers, donc je ne peux donc pas les utiliser. Pourriez-vous (ou quelqu'un d'autre) pointer sur une fonction pertinente à Scipy / Numpy?


Commencez à docs.cipy.org/doc/numpy/reference/ROUNDINES. Sort.html . Notez que le tri par défaut renvoie une copie, mais ndarray.sort est en place. (Je n'ai aucune expérience avec SciPy / Numpy, mais savez qu'il est bien respecté et très optimisé.)


3 Réponses :


10
votes

Eh bien, vous ne pouvez pas le faire avec array.array , mais vous pouvez avec numpy.array : xxx

ou Vous pouvez convertir directement à partir d'un (code> array.array si vous avez déjà déjà: xxx


1 commentaires

Et cela semble être un tri en place. Bonne réponse.



1
votes

En regardant le Array Docs , je ne vois pas une méthode de tri. Je pense que ce qui suit est à peu près aussi proche que possible d'utiliser des fonctions standard, bien qu'il soit vraiment en train de clocer l'ancien objet avec un nouveau avec le même nom: xxx

ou, vous pouvez écrire votre posséder.

avec les informations supplémentaires des commentaires que vous matières de mémoire, cela semble inapplicable à votre situation; La solution numpy est la voie à suivre. Cependant, je vais laisser cela pour référence.


0 commentaires

2
votes

@steven a mentionné numpy.

Copies vs. in-place operation
-----------------------------
Most of the functions in `numpy` return a copy of the array argument
(e.g., `sort`).  In-place versions of these functions are often
available as array methods, i.e. ``x = np.array([1,2,3]); x.sort()``.
Exceptions to this rule are documented.


0 commentaires