Baralhamento de uma lista de objetos

Eu tenho uma lista de objectos e quero baralhá-los. Eu pensei que poderia usar o método `random.shuffle', mas isso parece falhar quando a lista é de objetos. Existe algum método para baralhar objectos ou outra forma de contornar isto?

import random

class A:
    foo = "bar"

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

print(random.shuffle(b))

Isto vai falhar.

Solução

random.shuffle deve funcionar. Aqui's um exemplo, onde os objetos são listas:

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

Note que o shuffle funciona no lugar, e retorna Nenhum.

Comentários (8)

#!/usr/bin/python3

import random

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

Para mim funciona bem. Assegura-te de definir o método aleatório.

Comentários (4)