การจับคู่ลำดับและแมป
แยกโครงสร้างลิสต์และพจนานุกรม
การจับคู่ลำดับและแมป เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน match และ case
- การจับคู่ลำดับและแมป
- รูปแบบคลาส
- การ์ดและไวลด์การ์ด