Перетасування списку об'єктів

У мене є список об'єктів і я хочу перемішати їх. Я думав, що можу використати метод random.shuffle, але він, здається, не спрацьовує, коли список складається з об'єктів. Чи існує метод для перемішування об'єктів або інший спосіб обійти це?

import random

class A:
    foo = "bar"

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

print(random.shuffle(b))

Це не спрацює.

Рішення

random.shuffle має працювати. Ось приклад, де об'єктами є списки:

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

Зверніть увагу, що shuffle працює на місці і повертає None.

Коментарі (8)

#!/usr/bin/python3

import random

s=list(range(5))
random.shuffle(s) # 
Коментарі (0)
>>> import random
>>> a = ['hi','world','cat','dog']
>>> random.shuffle(a,random.random)
>>> a
['hi', 'cat', 'dog', 'world']

У мене працює нормально. Переконайтеся, що встановлено випадковий метод.

Коментарі (4)