7
votes

Pourquoi ne devrait pas utiliser list.sort à Python

pendant que je passais par Google Python CLASS JOUR 1 PARTIE 2 À 14:20 - 14:30 mec dit "N'utilisez pas list.sort.sort " . Aussi, il a mentionné que "les dinosaures utilisent ça!" (c'est-à-dire c'est une vieille façon de faire le tri). Mais il n'a pas mentionné la raison.

Quelqu'un peut-il me dire pourquoi nous ne devrions pas utiliser list.sort ?


0 commentaires

3 Réponses :


8
votes

parce que list.sort.sort () code> fera un tri en place. Cela change donc la liste d'origine. Mais trié (liste) code> créerait une nouvelle liste au lieu de modifier l'original.

Exemple: P>

>>> s = [1,2,37,4]
>>> s.sort()
>>> s
[1, 2, 4, 37]
>>> s = [1,2,37,4,45]
>>> sorted(s)
[1, 2, 4, 37, 45]
>>> s
[1, 2, 37, 4, 45]


3 commentaires

Merci pour votre réponse. Y a-t-il un autre inconvénient de l'utiliser?


@LaxMikant Je ne pense pas que faire un tri en place est un désavantage, il est plus efficace (selon Python Doc) et probablement le seul moyen de le faire si vous avez une très grande liste. Un désavantage "réel" est que cela ne soit défini que pour list , tandis que trié fonctionne sur n'importe quel ibler , donc si un jour vous décidez que vous décidez que vous décidez Besoin d'utiliser quelque chose d'autre que la liste, vous serez coincé :)


@Holt - merci pour la réponse



6
votes

Je pense que c'est très opinent basé, parfois, vous devez modifier une liste d'origine et vous utiliser .sort () , parfois, vous n'avez pas besoin de le changer et que vous utilisez tri ()

en général, ce n'est pas mauvais utiliser .sort ()


0 commentaires

5
votes

de https://wiki.python.org/moin/howto/sorting :

Vous pouvez également utiliser la méthode list.sort.sort.sort.sort.sort () Il modifie la Liste en place (et renvoie Aucun pour éviter toute confusion). Généralement c'est moins pratique que trié () - mais si vous n'avez pas besoin de la liste d'origine, Il est légèrement plus efficace.

Beaucoup de personnes préfèrent ne pas changer l'état des variables (rechercher les avantages des valeurs / structures de données immuables), et préférez donc ne pas modifier la liste d'origine comme list.sort.sort .


2 commentaires

Les personnes qui préféraient des structures de données immuables utiliseraient un tuple , pas une liste ?


D'accord, mais vous utilisez le code de quelqu'un d'autre et que vous souhaitez avoir un impact minimal, il est toujours vrai.