Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การสุ่มลำดับลิสต์ใน Python: คู่มือทีละขั้นตอน

เมธอด random.shuffle() ใน Python เปลี่ยนลำดับรายการในลิสต์แบบสุ่ม ร่วมกับการเข้าถึงดัชนี (indexing) เมธอดนี้มีประโยชน์สำหรับการเลือกสุ่มรายการจากลิสต์ เมธอด random.shuffle() รับอาร์กิวเมนต์ 1 อัน: ลิสต์ที่คุณต้องการเปลี่ยนลำดับ


คุณอาจพบสถานการณ์ที่ต้องการสุ่มลำดับรายการในลิสต์ ตัวอย่างเช่น สมมติคุณสร้างโปรแกรมเลือกผู้ชนะการจับฉลากที่ร้านคุณ คุณอาจต้องการให้โปรแกรมเลือกผู้ชนะโดยการจัดระเบียบลำดับรายชื่อผู้เข้าร่วมแบบสุ่ม

นี่คือที่มาของเมธอด random.shuffle() เมธอด random.shuffle() เป็นส่วนของโมดูล random ใน Python ใช้สำหรับจัดระเบียบลำดับรายการในลิสต์แบบสุ่ม ในบทช่วยสอนนี้ เราจะอธิบายวิธีใช้เมธอด random.shuffle()

การสุ่มลำดับลิสต์ใน Python

ฟังก์ชัน random.shuffle() ใน Python จัดระเบียบลำดับรายการในลิสต์แบบสุ่ม เมธอดนี้มีประโยชน์สำหรับแอปพลิเคชันที่ต้องการดึงรายการจากลิสต์แบบสุ่ม เมธอด random.shuffle() แก้ไขลิสต์ต้นฉบับโดยตรง เมธอดนี้ไม่สร้างลิสต์ใหม่

ลิสต์ (list) จัดเก็บชุดข้อมูล ลิสต์ใน Python มีลำดับ (ordered) หมายความว่าเมื่อคุณจัดเก็บรายการในลิสต์ รายการนั้นจะอยู่ในตำแหน่งนั้นตลอด แม้จะเป็นคุณสมบัติสำคัญของลิสต์ แต่คุณอาจสร้างโปรแกรมที่ต้องการสุ่มลำดับของลิสต์

random.shuffle() เป็นส่วนของไลบรารี random ซึ่งนำ generator ของ pseudo-random number มาใช้ใน Python นั่นหมายความว่าก่อนใช้เมธอด random.shuffle() เราต้อง import ไลบรารี random เข้าโค้ดก่อน ทำได้โดยเพิ่มโค้ดนี้:

import random

ไวยากรณ์ของเมธอด random.shuffle():

import random
random.shuffle(list_name, function)

เมธอด random.shuffle() รับ 2 พารามิเตอร์:

81% ของผู้เข้าร่วมระบุว่ามีความมั่นใจมากขึ้นในโอกาสทางอาชีพด้านเทคโนโลยีหลังจากเข้าร่วมบูตแคมป์ ติดต่อเพื่อหาบูตแคมป์ที่เหมาะกับคุณวันนี้

นักเรียนบูตแคมป์เฉลี่ยใช้เวลาน้อยกว่า 6 เดือนในการเปลี่ยนสายอาชีพ ตั้งแต่เริ่มเรียนจนหางานแรกได้

  • list_name: list, tuple, หรือ string ที่คุณต้องการสุ่มลำดับ (จำเป็น)
  • function: ชื่อฟังก์ชันที่คืนค่า float แบบสุ่มระหว่าง 0.0 และ 1.0 หรือ float อื่นในช่วงนั้น (ไม่จำเป็น)

การใช้พารามิเตอร์ function กับ random.shuffle() พบได้น้อย คุณใช้ก็ต่อเมื่อต้องการอัลกอริทึมการสุ่มแบบกำหนดเองที่น้ำหนักค่าต่างกัน ดังนั้น เราไม่ครอบคลุมพารามิเตอร์ function ของ random.shuffle() ในบทช่วยสอนนี้

คุณสามารถใช้เมธอด random.shuffle() กับ string หรือ tuple ได้ ในทุกกรณี random.shuffle() จะแก้ไขข้อมูลต้นฉบับ ไม่สร้างค่าใหม่ เช่น string ใหม่ หรือ tuple ใหม่

ตัวอย่างการใช้ random.shuffle() ใน Python

สมมติเราจัดการจับฉลากที่ร้านของเรา ผู้ชนะอันดับ 1 จะได้บัตรของขวัญมูลค่า $100 ใช้ซื้อสินค้าใดๆ ในร้านได้ ผู้ที่ได้อันดับ 2 จะได้บัตรของขวัญ $50 และอันดับ 3 ได้ $25

เรามีลิสต์ที่มีชื่อทุกคนที่เข้าร่วมจับฉลาก เป้าหมายคือจัดระเบียบลิสต์ให้เป็นลำดับสุ่มเพื่อหาผู้ชนะ เราจะใช้เมธอด random.shuffle()

โค้ดที่ใช้จัดระเบียบลำดับลิสต์แบบสุ่มเพื่อระบุผู้ชนะ:

import random
raffle_entrants = ['Thomas Crane', 'Braden Cox', 'Adie Paulson', 'Leonardo Downs', 'Lindsay Knapp', 'Carl Sanderson']
print('Entrants (ordered)')
print(raffle_entrants)
print('Winners (random order)')
random.shuffle(raffle_entrants)
print(raffle_entrants)

ฟังก์ชันคืนค่าดังนี้:

Entrants (ordered)
['Thomas Crane', 'Braden Cox', 'Adie Paulson', 'Leonardo Downs', 'Lindsay Knapp', 'Carl Sanderson']
Winners (random order)
['Adie Paulson', 'Braden Cox', 'Carl Sanderson', 'Leonardo Downs', 'Thomas Crane', 'Lindsay Knapp']

บรรทัดแรก เรา import ไลบรารี random ด้วยคำสั่ง import ใน Python ไลบรารีนี้มีเมธอด random.shuffle() ที่เราใช้ภายหลังในโค้ด ต่อมา เราประกาศตัวแปร Python ชื่อ raffle_entrants ซึ่งรวมชื่อทุกคนที่เข้าร่วมจับฉลาก

2 บรรทัดถัดไป เราพิมพ์ข้อความไปคอนโซลว่า Entrants (ordered) ตามด้วยเนื้อหาของลิสต์ raffle_entrants นี่ช่วยให้เราเห็นลิสต์ก่อนที่โปรแกรมจะสุ่มลำดับ

เราพิมพ์ข้อความ "Winners (random order)" โค้ดใช้เมธอด random.shuffle() สุ่มลำดับเนื้อหาของลิสต์ raffle_entrants สุดท้าย เราพิมพ์ลิสต์ raffle_entrants หลังจากถูกสุ่มแล้วด้วย random.shuffle()

ตอนนี้เรามีลิสต์ชื่อที่สุ่มลำดับแล้ว ตามตัวอย่างข้างต้น เรารู้แล้วว่า Braden Cox ได้อันดับ 1 Thomas Crane ได้อันดับ 2 และ Leonardo Downs ได้อันดับ 3

การตรวจสอบโค้ดของเรา

ถ้าเรารันโค้ดอีกครั้ง เราจะได้ลิสต์ Python ที่จัดระเบียบลำดับใหม่ นี่คือสิ่งที่เกิดขึ้นเมื่อเรารันโค้ดครั้งที่ 2:

Entrants (ordered)
['Thomas Crane', 'Braden Cox', 'Adie Paulson', 'Leonardo Downs', 'Lindsay Knapp', 'Carl Sanderson']
Winners (random order)
['Braden Cox', 'Lindsay Knapp', 'Carl Sanderson', 'Leonardo Downs', 'Thomas Crane', 'Adie Paulson']

ดังนั้น ชัดเจนว่า random.shuffle() จะคืนค่าลิสต์ที่จัดระเบียบแบบสุ่ม (อย่างเคร่งครัด คือ pseudo-randomly) ทุกครั้งที่เราใช้

สรุป

คุณสามารถสุ่มลำดับรายการในลิสต์ใน Python ได้ด้วยเมธอด random.shuffle() ในตัวอย่างของเรา random.shuffle() ช่วยสร้างโปรแกรมที่เลือกผู้ชนะจับฉลากแบบสุ่มจากลิสต์ผู้เข้าร่วม

ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรม Python? อ่านคู่มือ How to Learn Python ของเรา ในคู่มือนี้ คุณจะพบเคล็ดลับชั้นนำเกี่ยวกับวิธีเรียน Python คู่มือยังรวมรายการแหล่งเรียนรู้และคอร์สที่จะช่วยพัฒนาความรู้ Python ของคุณ