Blanding af en liste med objekter

Jeg har en liste med objekter, og jeg vil blande dem. Jeg troede, at jeg kunne bruge metoden random.shuffle, men det ser ud til at mislykkes, når listen er af objekter. Er der en metode til at blande objekter eller en anden måde at omgå dette på?

import random

class A:
    foo = "bar"

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

print(random.shuffle(b))

Dette vil mislykkes.

Løsning

random.shuffle burde virke. Her er et eksempel, hvor objekterne er lister:

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

Bemærk, at shuffle virker på stedet og returnerer None.

Kommentarer (8)

#!/usr/bin/python3

import random

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

Det fungerer fint for mig. Sørg for at indstille den tilfældige metode.

Kommentarer (4)