Python-da siyahıda elementləri qarışdırın

Biznes

Python-da siyahının (massiv) elementlərini qarışdırmaq (təsadüfi olaraq çeşidləmək) istəyirsinizsə, standart kitabxananın təsadüfi modulundan istifadə edin.

İki funksiya var: orijinal siyahını təsadüfi çeşidləyən shuffle() və yeni təsadüfi çeşidlənmiş siyahı qaytaran sample(). sample() sətirlər və kortejlər üçün istifadə edilə bilər.

  • Orijinal siyahını qarışdırın:random.shuffle()
  • Yeni, qarışdırılmış siyahı yaradın.:random.sample()
  • Sətirləri və tupleləri qarışdırın
  • Təsadüfi nömrə toxumunu düzəldin

Təsadüfi deyil, artan və ya azalan qaydada və ya tərs qaydada çeşidləmək istəyirsinizsə, aşağıdakı məqaləyə baxın.

Orijinal siyahını qarışdırın:random.shuffle()

Təsadüfi moduldakı shuffle() funksiyası orijinal siyahını təsadüfi olaraq çeşidləyə bilər.

import random

l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]

random.shuffle(l)
print(l)
# [1, 0, 4, 3, 2]

Yeni, qarışdırılmış siyahı yaradın.:random.sample()

Təsadüfi moduldakı sample() funksiyası orijinal siyahı dəyişdirmədən təsadüfi çeşidlənən yeni siyahı yaratmaq üçün istifadə edilə bilər.

sample() təsadüfi olaraq siyahıdan elementi seçən və götürən funksiyadır. Birinci arqument siyahıdır, ikinci arqument isə əldə ediləcək elementlərin sayıdır. Təfərrüatlar üçün aşağıdakı məqaləyə baxın.

Əgər sample() ilə seçiləcək elementlərin sayı siyahıdakı elementlərin ümumi sayıdırsa, biz bütün elementlərin təsadüfi çeşidlənməsi ilə yeni siyahı alırıq. Siyahıdakı elementlərin ümumi sayı len() vasitəsilə əldə edilir.

Orijinal obyekt dəyişdirilməyəcək.

l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]

lr = random.sample(l, len(l))
print(lr)
# [0, 3, 1, 4, 2]

print(l)
# [0, 1, 2, 3, 4]

Sətirləri və tupleləri qarışdırın

Sətirlər və kortejlər dəyişməzdir, ona görə də orijinal obyekti dəyişdirmək üçün random.shuffle() istifadə etsəniz, aşağıdakı xətanı alacaqsınız.
TypeError

s = 'abcde'

# random.shuffle(s)
# TypeError: 'str' object does not support item assignment

t = tuple(range(5))
print(t)
# (0, 1, 2, 3, 4)

# random.shuffle(t)
# TypeError: 'tuple' object does not support item assignment

Əgər sətir və ya dəftəri qarışdırmaq istəyirsinizsə, yeni obyekt yaradan random.sample() istifadə edin.

Hətta sətir və ya dəst arqument kimi göstərildikdə belə, random.sample() siyahısı qaytarır, ona görə də onu yenidən sətir və ya dəstdə emal etmək lazımdır.

Bir sətir vəziyyətində, simvolların bir-bir siyahısı olacaq. Onları yenidən bir sətirdə birləşdirmək üçün join() metodundan istifadə edin.

sr = ''.join(random.sample(s, len(s)))
print(sr)
# bedca

Tuples üçün tuple() funksiyasından istifadə edin ki, bu da siyahıdan tuple yaradır.

tr = tuple(random.sample(t, len(l)))
print(tr)
# (0, 1, 2, 4, 3)

Təsadüfi nömrə toxumunu düzəldin

Təsadüfi modulun seed() funksiyasına ixtiyari tam ədəd verməklə, təsadüfi ədədlərin toxumunu sabitləşdirmək və təsadüfi ədədlər generatorunu işə salmaq olar.

Eyni toxumla işə salındıqdan sonra həmişə eyni şəkildə yenidən sıralanır.

l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]

l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]
Copied title and URL