Mi piacerebbe fare un casuale shuffle di una lista ma con una condizione: un elemento non può mai essere nella stessa posizione originale dopo lo shuffle.python shuffle tale che la posizione non si ripeterà mai
Esiste un modo per eseguire tali operazioni in Python per un elenco?
Esempio:
list_ex = [1,2,3]
ciascuna delle seguenti liste mescolate dovrebbe avere la stessa probabilità di essere campionato dopo il riordino:
list_ex_shuffled = [2,3,1]
list_ex_shuffled = [3,1,2]
ma le permutazioni [1,2,3], [ 1,3,2], [2,1,3] e [3,2,1] non sono consentiti poiché tutti ripetono una delle posizioni degli elementi.
NOTA: ogni elemento in list_ex è un ID univoco. Non è consentita la ripetizione dello stesso elemento.
Qualche idea? Grazie!
Cosa ti aspetteresti quando l'elenco contiene più elementi uguali tra loro. Ad esempio, cosa vuoi che succeda quando la lista è '[2, 2, 2]'? – crayzeewulf
Una combinazione di utilizzo di [deque] (http://docs.python.org/2/library/collections.html#collections.deque) e il suo metodo 'ruvida' potrebbero produrre il risultato atteso. Ma, in alcuni casi, come nel commento sopra, non hai definito chiaramente il risultato atteso. – sean
@crayzeewulf buon punto! la struttura dei miei dati non incontrerà mai tale caso, grazie! – Dnaiel