Python-да тізімнің (массивтің) элементтерін араластыру (кездейсоқ сұрыптау) қажет болса, стандартты кітапхананың кездейсоқ модулін пайдаланыңыз.
Екі функция бар: бастапқы тізімді кездейсоқ сұрыптайтын shuffle() және жаңа кездейсоқ сұрыпталған тізімді қайтаратын sample(). sample() жолдар мен кортеждер үшін пайдаланылуы мүмкін.
- Бастапқы тізімді араластырыңыз:
random.shuffle()
- Жаңа, аралас тізімді жасаңыз.:
random.sample()
- Жолдар мен кортеждерді араластыру
- Кездейсоқ сандар тұқымын түзетіңіз
Кездейсоқ емес, өсу немесе кему ретімен немесе кері ретпен сұрыптағыңыз келсе, келесі мақаланы қараңыз.
- Қатысты мақалалар:Python тілінде тізімді сұрыптау: сұрыпталған және сұрыпталған арасындағы айырмашылық
Бастапқы тізімді араластырыңыз:random.shuffle()
Кездейсоқ модульдегі shuffle() функциясы бастапқы тізімді кездейсоқ сұрыптай алады.
import random
l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]
random.shuffle(l)
print(l)
# [1, 0, 4, 3, 2]
Жаңа, аралас тізімді жасаңыз.:random.sample()
Кездейсоқ модульдегі sample() функциясын бастапқы тізімді өзгертпей, кездейсоқ сұрыпталған жаңа тізім жасау үшін пайдалануға болады.
sample() — тізімнен элементті кездейсоқ таңдайтын және шығарып алатын функция. Бірінші аргумент – тізім, ал екінші аргумент – шығарылатын элементтердің саны. Мәліметтер алу үшін келесі мақаланы қараңыз.
- Қатысты мақалалар:Python тіліндегі тізімнен элементтерді кездейсоқ таңдау:
choice()
,sample()
,choices()
Егер sample() арқылы таңдалатын элементтер саны тізімдегі элементтердің жалпы саны болса, біз барлық элементтері кездейсоқ сұрыпталған жаңа тізім аламыз. Тізімдегі элементтердің жалпы саны len() арқылы алынады.
Бастапқы нысан өзгертілмейді.
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]
Жолдар мен кортеждерді араластыру
Жолдар мен кортеждер өзгермейді, сондықтан бастапқы нысанды өзгерту үшін random.shuffle() қолдансаңыз, келесі қатені аласыз.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
Жолды немесе кортежді араластырғыңыз келсе, жаңа нысан жасайтын random.sample() пайдаланыңыз.
Жол немесе кортеж аргумент ретінде көрсетілсе де, random.sample() тізімді қайтарады, сондықтан оны жолға немесе кортежге қайта өңдеу қажет.
Жол жағдайында ол бір-бірден таңбалар тізімі болады. Оларды қайтадан бір жолға біріктіру үшін join() әдісін пайдаланыңыз.
sr = ''.join(random.sample(s, len(s)))
print(sr)
# bedca
Кортеждер үшін тізімнен кортежді жасайтын tuple() пайдаланыңыз.
tr = tuple(random.sample(t, len(l)))
print(tr)
# (0, 1, 2, 4, 3)
Кездейсоқ сандар тұқымын түзетіңіз
Кездейсоқ модульдің seed() функциясына ерікті бүтін сан беру арқылы кездейсоқ сандар тұқымын бекітуге және кездейсоқ сандар генераторын инициализациялауға болады.
Бір тұқыммен инициализациядан кейін ол әрқашан бірдей жолмен қайта реттеледі.
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]