Premiešanie zoznamu objektov

Mám zoznam objektov a chcem ich premiešať. Myslel som, že by som mohol použiť metódu random.shuffle, ale zdá sa, že to zlyháva, keď je zoznam objektov. Existuje nejaká metóda na premiešavanie objektov alebo iný spôsob, ako to obísť?

import random

class A:
    foo = "bar"

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

print(random.shuffle(b))

Toto zlyhá.

Riešenie

random.shuffle by malo fungovať. Tu je príklad, kde objekty sú zoznamy:

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

Všimnite si, že shuffle funguje na mieste a vracia None.

Komentáre (8)

#!/usr/bin/python3

import random

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

Mne to funguje dobre. Uistite sa, že je nastavená náhodná metóda.

Komentáre (4)