Skip to content

Mescolare una lista, una stringa o una tupla in Python (random.shuffle, sample)

Python

In Python, puoi mescolare (= randomizzare) un elenco, una stringa e una tupla con random.shuffle() e random.sample().

random.shuffle() rimescola un elenco in posizione e random.sample() restituisce un nuovo elenco randomizzato. random.sample() può essere utilizzato anche per una stringa e una tupla.

  • random.shuffle() rimescola un elenco in posizione
  • random.sample() fornisce un nuovo elenco mescolato
  • Vieni a mescolare una stringa e una tupla
  • Inizializza il generatore di numeri casuali con random.seed()

Se desideri ordinare in ordine crescente o decrescente o inverso invece di mescolare, vedere i seguenti articoli.

random.shuffle() rimescola un elenco in posizione

Puoi mescolare un elenco sul posto con random.shuffle().

import random

l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]

random.shuffle(l)
print(l)
# [1, 0, 4, 3, 2]

random.sample() fornisce un nuovo elenco mescolato

random.sample() fornisce un nuovo elenco mescolato. L’elenco originale rimane invariato.

random.sample() contiene elementi casuali da un elenco. Passa l’elenco al primo argomento e il numero di elementi da restituire al secondo argomento. Vedere il seguente articolo per i dettagli.

Impostando il numero totale di elementi nell’elenco sul secondo argomento, random.sample() indica un nuovo elenco con tutti gli elementi mescolati casualmente. Puoi ottenere il numero totale di elementi nell’elenco con len().

l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]

lr = random.sample(l, len(l))
print(lr)
# [0, 3, 1, 4, 2]

print(l)
# [0, 1, 2, 3, 4]

Vieni a mescolare una stringa e una tupla

Le stringhe e le tuple sono immutabili, quindi random.shuffle() che modifica l’oggetto originale genera un errore TypeError.

s = 'abcde'

# random.shuffle(s)
# TypeError: 'str' object does not support item assignment

t = tuple(range(5))
print(t)
# (0, 1, 2, 3, 4)

# random.shuffle(t)
# TypeError: 'tuple' object does not support item assignment

Per mescolare stringhe o tuple, usa random.sample(), che crea un nuovo oggetto.

random.sample() contiene una lista anche quando una stringa o una tupla è specificata nel primo argomento, quindi è necessario convertirla in una stringa o una tupla.

Per le stringhe viene restituito un elenco di caratteri. Utilizzare il metodo join() per concatenare nuovamente una singola stringa.

sr = ''.join(random.sample(s, len(s)))
print(sr)
# bedca

Usa tuple() per le tuple, che crea una tupla da un elenco.

tr = tuple(random.sample(t, len(l)))
print(tr)
# (0, 1, 2, 4, 3)

Inizializza il generatore di numeri casuali con random.seed()

Puoi inizializzare un generatore di numeri casuali con random.seed().

Dopo l’inizializzazione con lo stesso seme, viene mischiato allo stesso modo.

l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]

l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]