deque
ใช้คิวสองด้านที่ทำงานรวดเร็ว
deque เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
deque คืออะไร
deque (ออกเสียงว่า 'เด็ค') คือคิวสองปลายจากโมดูล collections ซึ่งรองรับการเพิ่มและนำสมาชิกออกอย่างรวดเร็วจากทั้งสองปลาย
นำเข้าโดยใช้ from collections import deque
from collections import deque
d = deque([1, 2, 3])
print(d)เหตุใดจึงไม่ใช้ list
รายการจะทำงานช้าเมื่อต้องแทรกหรือนำสมาชิกออกจากด้านหน้า เพราะสมาชิกทุกตัวต้องเลื่อนตำแหน่ง ส่วน deque ทำงานกับด้านหน้าได้ในเวลาคงที่ จึงเหมาะสำหรับคิว
from collections import deque
d = deque(['b', 'c'])
d.appendleft('a')
print(d)การเพิ่มข้อมูลที่ปลายทั้งสองด้าน
ใช้ .append() เพื่อเพิ่มข้อมูลทางขวา และใช้ .appendleft() เพื่อเพิ่มข้อมูลทางซ้าย
from collections import deque
d = deque()
d.append(1)
d.append(2)
d.appendleft(0)
print(d)การนำข้อมูลออกจากปลายทั้งสองด้าน
.pop() จะนำรายการที่อยู่ขวาสุดออกและส่งคืนรายการนั้น ส่วน .popleft() จะนำรายการที่อยู่ซ้ายสุดออก ทั้งสองวิธีทำงานได้รวดเร็ว
from collections import deque
d = deque([10, 20, 30])
print(d.pop())
print(d.popleft())
print(d)คิวอย่างง่าย (FIFO)
สำหรับการทำงานแบบเข้าก่อนออกก่อน ให้เพิ่มข้อมูลทางขวาและนำข้อมูลออกทางซ้าย ข้อมูลจะออกตามลำดับที่เข้ามา
from collections import deque
queue = deque()
queue.append('first')
queue.append('second')
print(queue.popleft())
print(queue.popleft())คิวสองปลายแบบจำกัดขนาด
กำหนด maxlen เพื่อจำกัดขนาด เมื่อเต็มแล้ว การเพิ่มข้อมูลที่ปลายด้านหนึ่งจะนำข้อมูลจากอีกด้านออกโดยอัตโนมัติ เหมาะสำหรับเก็บประวัติล่าสุด
from collections import deque
recent = deque(maxlen=3)
for n in [1, 2, 3, 4, 5]:
recent.append(n)
print(recent)การหมุนรายการ
.rotate(n) จะเลื่อนรายการไปทางขวาเป็นจำนวน n ขั้น หาก n เป็นค่าลบ จะหมุนไปทางซ้าย รายการจะวนกลับไปยังอีกด้าน
from collections import deque
d = deque([1, 2, 3, 4, 5])
d.rotate(2)
print(d)
d.rotate(-1)
print(d)การเพิ่มรายการจำนวนมาก
.extend() จะเพิ่มรายการจำนวนมากทางขวา และ .extendleft() จะเพิ่มรายการเหล่านั้นทางซ้าย โปรดทราบว่า extendleft จะกลับลำดับของข้อมูลที่เพิ่ม
from collections import deque
d = deque([3])
d.extend([4, 5])
d.extendleft([2, 1])
print(d)การเข้าถึงด้วยดัชนีและความยาว
คิวสองปลายรองรับการเข้าถึงด้วยดัชนีเช่นเดียวกับลิสต์ และใช้ร่วมกับ len() ได้ การเข้าถึงข้อมูลตรงกลางช้ากว่าการเข้าถึงที่ปลายทั้งสองด้าน จึงควรเลือกใช้การดำเนินการที่ปลายด้านใดด้านหนึ่ง
from collections import deque
d = deque(['a', 'b', 'c'])
print(d[0])
print(d[-1])
print(len(d))การล้างและการกลับลำดับ
.reverse() จะกลับลำดับของคิวสองปลายในตำแหน่งเดิม และ .clear() จะล้างข้อมูลทั้งหมด ทั้งสองวิธีแก้ไขคิวสองปลายโดยตรง
from collections import deque
d = deque([1, 2, 3])
d.reverse()
print(d)
d.clear()
print(d)การนับจำนวนครั้งที่ปรากฏ
เช่นเดียวกับลิสต์ คิวสองปลายมี .count() สำหรับนับว่าค่าหนึ่งปรากฏกี่ครั้ง
from collections import deque
d = deque([1, 2, 2, 3, 2])
print(d.count(2))ตรวจสอบความเข้าใจ
คุณสร้างคิวแบบ FIFO ด้วยคิวสองปลาย คู่เมธอดใดให้ลำดับการเข้าก่อนออกก่อนที่ถูกต้อง
สรุป: คิวสองปลาย
คุณได้เรียนรู้ว่าโครงสร้างคิวสองปลาย:
- รองรับ
append/popที่ปลายทั้งสองด้านได้อย่างรวดเร็ว ต่างจากลิสต์ - มี
appendleftและpopleftสำหรับด้านซ้าย - สามารถจำกัดขนาดด้วย
maxlenเพื่อเก็บเฉพาะรายการล่าสุด - มี
rotate,extend,reverseและcountสำหรับงานในลักษณะคิว
from collections import deque
q = deque(maxlen=2)
for x in ['a', 'b', 'c']:
q.append(x)
print(q)คำถามที่พบบ่อย
บทเรียน “deque” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “deque” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “deque”
ใช้คิวสองด้านที่ทำงานรวดเร็ว คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “deque” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ