0Pricing
Python Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple และ OrderedDict
← กลับไปที่ Python Academy