Mischen einer Liste von Objekten

Ich habe eine Liste von Objekten und möchte sie mischen. Ich dachte, ich könnte die Methode random.shuffle verwenden, aber das scheint zu scheitern, wenn die Liste aus Objekten besteht. Gibt es eine Methode zum Mischen von Objekten oder eine andere Möglichkeit, dieses Problem zu umgehen?

import random

class A:
    foo = "bar"

a1 = a()
a2 = a()
b = [a1, a2]

print(random.shuffle(b))

Dies wird fehlschlagen.

Lösung

random.shuffle sollte funktionieren. Hier ist ein Beispiel, bei dem die Objekte Listen sind:

from random import shuffle
x = [[i] for i in range(10)]
shuffle(x)

# print(x)  gives  [[9], [2], [7], [0], [4], [5], [3], [1], [8], [6]]
# of course your results will vary

Beachten Sie, dass shuffle an Ort und Stelle funktioniert und None zurückgibt.

Kommentare (8)

#!/usr/bin/python3

import random

s=list(range(5))
random.shuffle(s) # 
Kommentare (0)
>>> import random
>>> a = ['hi','world','cat','dog']
>>> random.shuffle(a,random.random)
>>> a
['hi', 'cat', 'dog', 'world']

Bei mir funktioniert das gut. Stellen Sie sicher, dass Sie die Zufallsmethode einstellen.

Kommentare (4)