เมธอด 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 ของคุณ