Coding for KidsCoding for Kids
ระดับสร้างสรรค์ความท้าทายคู่มือครู
โหวตสำหรับฟีเจอร์
หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ

รายการขั้นสูง
การสร้างรายการแบบย่อ

ในบทนี้ เราจะสำรวจวิธีใหม่ในการใช้ลิสต์ใน Python ที่เกี่ยวข้องกับการเพิ่มประสิทธิภาพ การแบ่งส่วน และแม้กระทั่งการสร้างลิสต์หลายมิติขนาดใหญ่เช่น Matrixes ที่มีลักษณะใกล้เคียงกับตาราง

สำหรับระดับนี้ เราจะทำงานกับ List Comprehensions ซึ่งเป็นลิสต์ที่สามารถสร้างขึ้นจากลิสต์อื่น ๆ โดยการเลือกเฉพาะส่วนประกอบบางอย่างจากพวกมัน นอกจากนี้ยังสามารถทำได้ด้วยโค้ดเพียงบรรทัดเดียวอย่างตรงไปตรงมา โดยไม่จำเป็นต้องป้อนลิสต์ด้วยตนเองหรือคิดค้นกระบวนการอัตโนมัติที่ซับซ้อน

Guide

วัตถุประสงค์

เก็บและจัดเรียงผักรากทั้งหมดในห้องเก็บของเพื่อที่คุณจะได้จัดเก็บไว้ในที่ที่เหมาะสมโดยใช้ list comprehensions

ในห้องเก็บของมีถุงหลายใบที่เต็มไปด้วยผักรากที่ต้องการการจัดเรียง ซึ่งได้แก่ potatoes , onions และ garlic โดยภายในอาจมีผักที่เน่าเสียออกมาบ้าง ให้แยกผักที่ดีออกมาและจัดเก็บลงในกล่องที่เหมาะสม

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

เดินไปยังเครื่องหมาย X สว่างที่อยู่ด้านหน้าของแต่ละถุงและใช้ฟังก์ชัน speak() เพื่อระบุเนื้อหาของแต่ละถุงโดยใช้ค่าสำหรับรายการเหล่านั้น เช่น player.speak(left_sack) เมื่อคุณระบุเนื้อหาภายในแต่ละถุงแล้ว ให้ระบุรายการที่ต้องการนำออก เช่น ผักที่มีคำว่า "Bad" , "Spoiled" หรือ "Rotten" ในชื่อของมัน

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

จากค่าสำหรับรายการ (list constants) ทั้งสาม (3) คือ left_sack , middle_sack และ right_sack ให้สร้างรายการใหม่สามรายการชื่อ potatoes , onions และ garlic ที่ไม่มีรายการที่ไม่ต้องการออกจากถุง List Comprehensions ช่วยให้คุณสร้างรายการใหม่โดยไม่ต้องเขียนโค้ดมากมาย เช่น:

# Original list sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # This will create a list named potatoes with: # ["Potatoes", "Sweet Potatoes"]

ในตัวอย่างข้างต้น รายการที่ชื่อว่า potatoes ถูกสร้างขึ้นจากรายการที่ชื่อ sack โดยมีเฉพาะรายการ ["Potatoes", "Sweet Potatoes"] และละเว้นรายการ "Spoiled Potatoes" ซึ่งทำได้โดยการสร้างลูป for แบบรวมตัวเอง ในกรณีนี้ใช้ x เป็นดัชนีในการวนผ่านรายการและใช้คำสั่ง for / in เพื่อตรวจสอบและละเว้นองค์ประกอบที่ไม่ต้องการ นั่นคือ สตริงใดๆ ที่มีคำว่า "Spoiled"

เพื่อทบทวน ให้ตรวจสอบว่าค่าสำหรับรายการมีคำว่า "Bad" , "Spoiled" หรือ "Rotten" อยู่ภายในหรือไม่โดยใช้ฟังก์ชัน speak() จากนั้นสร้างรายการ potatoes , onions และ garlic โดยใช้ List Comprehensions เพื่อเอาองค์ประกอบที่ไม่ต้องการออกจากแต่ละรายการ

เมื่อสร้างรายการเหล่านี้เสร็จแล้ว ให้เดินไปที่เครื่องหมาย X สีทองทั้งสาม (3) ที่อยู่หน้ากล่องที่มีป้ายผัก และวางรายการเหล่านี้โดยใช้ฟังก์ชัน place() ลงในกล่องที่สอดคล้องกันเพื่อทำให้ระดับนี้สำเร็จ โดยที่ที่ตั้งถูกระบุด้วยป้าย ได้แก่ onions ที่กล่องด้านซ้าย, potatoes ที่กล่องตรงกลาง และ garlic ที่กล่องด้านซ้าย

หนังสือโค้ด