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

Python Queue and Deque:คำแนะนำทีละขั้นตอน

คิว Python เป็นไลบรารีในตัวที่ช่วยให้คุณสามารถสร้างรายการที่ใช้กฎ FIFO โดยเข้าก่อนออกก่อน Python deque ใช้กฎที่ตรงกันข้าม คิว LIFO หรือเข้าก่อนออกก่อน ทั้งสองทำงานบนสแต็กและคิว


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

มีไลบรารี่ในตัวใน Python ที่ออกแบบมาเพื่อช่วยคุณเกี่ยวกับปัญหาประเภทนี้:คิว คิวมีความคล้ายคลึงกับสแต็คใน Python โดยมีความแตกต่างหลักกับคิว คุณจะลบรายการที่เพิ่มเข้ามาล่าสุด ในทางกลับกัน คุณลบรายการที่เพิ่มล่าสุดในสแต็ก

ในบทช่วยสอนนี้ เราจะอธิบายพื้นฐานของคิวใน Python และวิธีการใช้งาน

คิวไพรเมอร์

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

คิวจะแตกต่างจากอาร์เรย์และรายการในคิวที่ไม่ใช่การเข้าถึงแบบสุ่ม ข้อมูลที่จัดเก็บไว้ในคิวมีลำดับเฉพาะ ดังนั้นหากคุณต้องการเพิ่มรายการในคิว รายการนั้นจะถูกเพิ่มไปยังส่วนท้าย นี่เรียกว่า first-in , first-out หรือคิว FIFO สั้นๆ

ใน Python คุณสามารถใช้รายการมาตรฐานเป็นคิวได้ อย่างไรก็ตาม รายการอาจทำงานช้าได้หากคุณแทรกและลบองค์ประกอบ เนื่องจากการเปลี่ยนแปลงองค์ประกอบที่จุดเริ่มต้นของรายการจำเป็นต้องย้ายองค์ประกอบอื่นๆ ในรายการลง ดังนั้น หากคุณต้องการใช้รายการเข้าก่อน-ออกก่อน คุณควรใช้คิว

คิวไพทอน

ดังนั้นคุณจะใช้งานคิวใน Python ได้อย่างไร ในการทำเช่นนั้น เราต้องใช้ไลบรารีคิวในตัว โมดูลคิวประกอบด้วยคลาสที่มีประโยชน์มากมายสำหรับคิว แต่สำหรับบทช่วยสอนนี้ เราจะเน้นที่ queue.Queue ชั้นเรียน

81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้

ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก

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

อันดับแรก เราต้องกำหนดคลาสคิวของเรา เราสามารถทำได้โดยใช้รหัสต่อไปนี้:

from queue import Queue
waitlist = Queue()

ตอนนี้เราพร้อมที่จะสร้างคิวของเราแล้ว put() ฟังก์ชันช่วยให้ข้อมูลสามารถ put เข้าคิว. ในรหัสด้านล่าง เราจะเพิ่มคนห้าคนในรายชื่อผู้รอที่เพิ่งลงชื่อสมัครใช้เพื่อดูภาพยนตร์:

waitlist.put('Erin')
waitlist.put('Samantha')
waitlist.put('Joe')
waitlist.put('Martin')
waitlist.put('Helena')

ตอนนี้เราได้เพิ่มชื่อห้าชื่อของเราในคิวแล้ว Erin อยู่ในคิวของเราก่อน ตามด้วย Samantha ไปเรื่อยๆ จนกว่าเราจะไปถึง Helena ซึ่งเป็นคนสุดท้าย เราสามารถสาธิตได้โดยใช้ get() ฟังก์ชัน เช่น

print(waitlist.get())

รหัสของเราส่งคืนดังต่อไปนี้:

Erin

อย่างที่คุณเห็น Erin เป็นคนแรกในคิวของเรา หากเราต้องการพิมพ์ชื่อสองชื่อแรกที่อยู่ในคิว เราจะใช้ get() ฟังก์ชั่นสองครั้ง:

print(waitlist.get())
print(waitlist.get())

รหัสของเราส่งคืนดังต่อไปนี้:

Erin
Samantha

ตัวอย่าง Python Deque

แต่ถ้าเราต้องการเพิ่มและลบจำนวนรายการออกจากปลายคิวของเราล่ะ นี่คือที่มาของฟังก์ชัน deque โดยการใช้ deque เราสามารถสร้างคิวแบบ double-end ที่เราสามารถเพิ่มและลบองค์ประกอบจากจุดเริ่มต้นหรือจุดสิ้นสุดของคิว Deques เป็น last-in , first-out , หรือ LIFO สั้นๆ

ลองใช้ตัวอย่างเดียวกันกับด้านบน:การจัดเก็บชื่อในรายการรอสำหรับภาพยนตร์ ประการแรก เราจะประกาศฟังก์ชัน deque ของเรา:

from collections import deque
waitlist = deque()

ตอนนี้เราได้เริ่มต้น deque ของเราแล้ว เราสามารถเพิ่มรายชื่อรอใน deque ของเราได้:

waitlist.append('Erin')
waitlist.append('Samantha')
waitlist.append('Joe')
waitlist.append('Martin')
waitlist.append('Helena')

อย่างที่คุณเห็น เราใช้ append() ฟังก์ชั่นเพื่อวางรายการลงในคิวของเรา หากต้องการดูค่าที่เก็บไว้ในรายการรอ เราสามารถใช้รหัสต่อไปนี้:

print(waitlist)

รหัสของเราส่งคืนดังต่อไปนี้:

deque(['Erin', 'Samantha', 'Joe', 'Martin', 'Helena'])

อย่างที่คุณเห็น ข้อมูลของเราถูกจัดเก็บในลำดับที่เราแทรกลงใน deque ของเรา แต่ถ้าเราต้องการลบรายการแรกออกจากคิวของเราล่ะ เราสามารถใช้ popleft() ทำหน้าที่บรรลุเป้าหมายนี้ นี่คือตัวอย่าง:

waitlist.popleft()
print(waitlist)

รหัสของเราได้ลบรายการแรกในรายการของเรา — Erin — และคืนค่าต่อไปนี้:

deque(['Samantha', 'Joe', 'Martin', 'Helena'])

หากเราต้องการลบรายการทั้งหมดใน deque เราสามารถใช้ฟังก์ชัน clear():

deque.clear()
print(waitlist)

ผลลัพธ์ของรหัสของเรามีดังนี้:

deque([])

อย่างที่คุณเห็น deque ของเราว่างเปล่า แต่วัตถุยังคงอยู่

บทสรุป

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

เรายังคุยกันถึงวิธีที่คุณสามารถใช้ deque เพื่อสร้างคิวแบบ double-end ซึ่งคุณสามารถเพิ่มและลบองค์ประกอบออกจากคิวของคุณได้ ตอนนี้คุณพร้อมที่จะเริ่มเขียนคำถามและข้อโต้แย้งของคุณเองแล้ว!

Python ใช้ในสภาพแวดล้อมการเขียนโปรแกรมระดับมืออาชีพที่หลากหลาย ดาวน์โหลด แอป Career Karma ฟรี วันนี้เพื่อเรียนรู้ว่า Python สามารถช่วยให้คุณก้าวไปสู่อาชีพในฝันในด้านเทคโนโลยีได้อย่างไร!