/ / Esiste una versione di list.sort () che restituisce l'elenco ordinato? - python, lista, ordinamento, casuale, shuffle

Esiste una versione di list.sort () che restituisce l'elenco ordinato? - python, lista, ordinamento, casuale, shuffle

Sto cercando di eseguire un'operazione in linea in cui ho bisogno di ordinare una lista come parte del processo. Il sort funzione di list tipo oggetti opera nella lista in cui è stato chiamato invece di restituire il risultato.

Il Documenti Python conferma questo:

list.sort ()
Ordina gli elementi della lista, in posizione.

Ho provato questo tramite la riga di comando di Python ed ecco il risultato:

>>> a = list("hello").sort()
>>> print a
None
>>> b = list("hello")
>>> print b
["h", "e", "l", "l", "o"]
>>> b.sort()
>>> print b
["e", "h", "l", "l", "o"]

C'è un modo per aggirare questo problema e creare una linea come la seguente?

result = list(random.choice(basesalts)).sort()

Usare il codice sopra mi aiuterebbe a ridurre la lunghezza e la verbosità del mio codice.

risposte:

13 per risposta № 1

C'è il built-in sorted():

>>> a = sorted(list("hello"))
>>> a
["e", "h", "l", "l", "o"]

Notare anche che non ne hai bisogno list() più:

>>> sorted("hello")
["e", "h", "l", "l", "o"]

Da basesalts sembra essere una lista di stringhe, puoi semplicemente fare:

result = sorted(random.choice(basesalts))

Se questo è il tipo di output che stai cercando.


5 per risposta № 2

Uso smistato.

Restituisce una nuova lista ordinata dagli elementi in iterabile.

>>> a = sorted(list("hello"))
>>> a
["e", "h", "l", "l", "o"]
>>>

La differenza è che il metodo list.sort () è definito solo per gli elenchi. Al contrario, la funzione sorted () accetta qualsiasi iterabile.

Quindi, puoi farlo

>>> a = sorted("hello")
>>> a
["e", "h", "l", "l", "o"]
>>>

Dai un'occhiata a questo bell'articolo Ordinamento del mini-HOW TO.


0 per risposta № 3

Sorted è il tuo amico qui. Non è una funzione membro della classe elenco è una funzione incorporata che prende una lista come argomento.

L'elenco delle classi non ha una funzione di ordinamento.

list1 = [ 1, 4, 5, 2]
print sorted(list1)

>> [1, 2, 4, 5]