សាប់ធាតុនៅក្នុងបញ្ជីមួយនៅក្នុង Python

អាជីវកម្ម

ប្រសិនបើអ្នកចង់សាប់ (តម្រៀបដោយចៃដន្យ) ធាតុនៃបញ្ជី (អារេ) នៅក្នុង Python សូមប្រើម៉ូឌុលចៃដន្យនៃបណ្ណាល័យស្តង់ដារ។

មានមុខងារពីរ៖ shuffle() ដែលតម្រៀបបញ្ជីដើមដោយចៃដន្យ និងគំរូ() ដែលត្រឡប់បញ្ជីដែលបានតម្រៀបដោយចៃដន្យថ្មី។ sample() អាចត្រូវបានប្រើសម្រាប់ខ្សែ និង tuples ។

  • រុះរើបញ្ជីដើម:random.shuffle()
  • បង្កើត​បញ្ជី​ថ្មី​ដែល​បាន​សាប់។:random.sample()
  • ច្របល់ខ្សែនិង tuple
  • ជួសជុលគ្រាប់ពូជលេខចៃដន្យ

បើ​អ្នក​ចង់​តម្រៀប​តាម​លំដាប់​ឡើង ឬ​ចុះ​ជំនួស​ឲ្យ​ចៃដន្យ ឬ​តាម​លំដាប់​បញ្ច្រាស សូម​មើល​អត្ថបទ​បន្ទាប់។

រុះរើបញ្ជីដើម:random.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() គឺជាមុខងារដែលជ្រើសរើសដោយចៃដន្យ និងទាញយកធាតុពីបញ្ជីមួយ។ អាគុយម៉ង់ទីមួយគឺជាបញ្ជី ហើយអាគុយម៉ង់ទីពីរគឺជាចំនួនធាតុដែលត្រូវទៅយក។ សូមមើលអត្ថបទខាងក្រោមសម្រាប់ព័ត៌មានលម្អិត។

ប្រសិនបើចំនួនធាតុដែលត្រូវជ្រើសរើសតាមគំរូ() គឺជាចំនួនសរុបនៃធាតុនៅក្នុងបញ្ជី យើងទទួលបានបញ្ជីថ្មីជាមួយនឹងធាតុទាំងអស់ដែលបានតម្រៀបដោយចៃដន្យ។ ចំនួនសរុបនៃធាតុនៅក្នុងបញ្ជីគឺទទួលបានដោយ 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]

ច្របល់ខ្សែនិង tuple

ខ្សែអក្សរ និង tuples គឺមិនអាចផ្លាស់ប្តូរបាន ដូច្នេះប្រសិនបើអ្នកប្រើ 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

ប្រសិនបើអ្នកចង់សាប់ខ្សែអក្សរ ឬ tuple សូមប្រើ random.sample() ដែលបង្កើតវត្ថុថ្មី។

ទោះបីជានៅពេលដែលខ្សែអក្សរ ឬ tuple ត្រូវបានបញ្ជាក់ជាអាគុយម៉ង់ក៏ដោយ ក៏ 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)

ជួសជុលគ្រាប់ពូជលេខចៃដន្យ

ដោយផ្តល់ចំនួនគត់តាមអំពើចិត្តទៅគ្រាប់ពូជមុខងាររបស់ម៉ូឌុលចៃដន្យ () គ្រាប់ពូជលេខចៃដន្យអាចត្រូវបានជួសជុល ហើយម៉ាស៊ីនបង្កើតលេខចៃដន្យអាចត្រូវបានចាប់ផ្តើម។

បន្ទាប់ពីចាប់ផ្តើមជាមួយគ្រាប់ពូជដូចគ្នា វាតែងតែត្រូវបានតម្រៀបឡើងវិញតាមរបៀបដូចគ្នា។

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]