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

การจับคู่ลำดับและแมป

แยกโครงสร้างลิสต์และพจนานุกรม

การจับคู่ลำดับและแมป เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

รูปแบบที่แยกโครงสร้างได้

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

การจับคู่รายการความยาวคงที่

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

point = [3, 4]

match point:
    case [x, y]:
        print('x =', x, 'y =', y)

ความยาวต้องตรงกัน

รูปแบบที่มีสองสมาชิกจะไม่ตรงกับลำดับที่มีสามสมาชิก แต่ละกรณีจึงตรวจทั้งโครงสร้างและความยาว

data = [1, 2, 3]

match data:
    case [a, b]:
        print('pair')
    case [a, b, c]:
        print('triple:', a, b, c)

การผสมค่าลิเทอรัลกับการจับค่า

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

command = ['move', 10, 20]

match command:
    case ['move', dx, dy]:
        print('moving by', dx, dy)
    case ['stop']:
        print('stopping')

การจับส่วนที่เหลือด้วย *

ชื่อที่มีเครื่องหมายดอกจันจะจับสมาชิกที่เหลือทั้งหมดไว้เป็นรายการ คล้ายกับการคลายแพ็กแบบขยาย

items = [1, 2, 3, 4, 5]

match items:
    case [first, *rest]:
        print('first:', first)
        print('rest:', rest)

รูปแบบว่างและรูปแบบสมาชิกเดียว

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

def describe(seq):
    match seq:
        case []:
            return 'empty'
        case [x]:
            return 'one: ' + str(x)
        case [x, *rest]:
            return 'many, first ' + str(x)

print(describe([]))
print(describe([9]))
print(describe([1, 2, 3]))

การจับคู่พจนานุกรม

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

event = {'type': 'click', 'x': 10, 'y': 20}

match event:
    case {'type': 'click', 'x': x, 'y': y}:
        print('click at', x, y)

การจับคู่คีย์บางส่วน

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

event = {'type': 'key', 'code': 'A', 'extra': 1}

match event:
    case {'type': 'key', 'code': code}:
        print('key pressed:', code)

การจับคีย์ที่เหลือ

ใช้ **rest เพื่อจับคู่คีย์และค่าที่ไม่ตรงกันทั้งหมดไว้ในพจนานุกรม

event = {'type': 'move', 'dx': 5, 'dy': 7}

match event:
    case {'type': 'move', **rest}:
        print('move details:', rest)

การซ้อนรูปแบบ

รูปแบบสามารถซ้อนกันได้อย่างอิสระ คุณสามารถจับคู่พจนานุกรมที่มีรายการอยู่ภายใน โดยแยกโครงสร้างทั้งสองอย่างพร้อมกัน

data = {'name': 'grid', 'size': [3, 4]}

match data:
    case {'name': name, 'size': [w, h]}:
        print(name, 'is', w, 'by', h)

สตริงไม่ใช่ลำดับในกรณีนี้

รูปแบบลำดับจงใจไม่จับคู่กับสตริงหรือไบต์ แม้ว่าทั้งสองจะวนซ้ำได้ก็ตาม วิธีนี้ป้องกันไม่ให้สตริงถูกแยกโครงสร้างเป็นตัวอักษรทีละตัวโดยไม่ได้ตั้งใจ

value = 'hi'

match value:
    case [a, b]:
        print('matched as sequence')
    case str():
        print('matched as string')

ตรวจสอบความเข้าใจ

รูปแบบ [first, *rest] จะผูกค่าใดบ้างเมื่อจับคู่กับ [1, 2, 3, 4]

ทบทวน

คุณได้เรียนรู้การแยกโครงสร้างรายการและพจนานุกรม

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

คำถามที่พบบ่อย

บทเรียน “การจับคู่ลำดับและแมป” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจับคู่ลำดับและแมป” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจับคู่ลำดับและแมป”

แยกโครงสร้างลิสต์และพจนานุกรม คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การจับคู่ลำดับและแมป” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. พื้นฐาน match และ case
  2. การจับคู่ลำดับและแมป
  3. รูปแบบคลาส
  4. การ์ดและไวลด์การ์ด
← กลับไปที่ Python Academy