Хэрэв та 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() нь жагсаалтыг буцаадаг тул үүнийг мөр эсвэл tuple руу буцааж боловсруулах шаардлагатай.
Мөрний хувьд тэмдэгтүүдийн нэг нэгээр нь жагсаалт байх болно. Тэдгээрийг дахин нэг мөр болгон нэгтгэхийн тулд join() аргыг ашиглана уу.
sr = ''.join(random.sample(s, len(s)))
print(sr)
# bedca
Tuple-ийн хувьд жагсаалтаас tuple үүсгэдэг 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]