ยินดีต้อนรับกลับ.
ฉันต้องการคุยกับคุณเกี่ยวกับฟังก์ชันที่มีประโยชน์บางอย่างที่เราได้รับ ซึ่งทำให้เราคิดในกระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชันได้
ชื่อของฟังก์ชันเหล่านี้คือตัวกรองแผนที่
ซิป.
และลด
และนี่เป็นฟังก์ชันทั่วไปที่มีประโยชน์อย่างยิ่ง ซึ่งคุณจะเขียนได้มากเมื่อคุณเป็นโปรแกรมเมอร์
Python
ลองสำรวจพวกเขากัน
อย่างแรก เราจะเริ่มด้วยแผนที่
และแผนที่ช่วยให้เราลดความซับซ้อนของโค้ดที่เรามีอยู่ในการคูณด้วยสอง
คุณเห็นแผนที่ ฉันมีมันเป็นฟังก์ชัน เป็นฟังก์ชันในตัว
และเราเห็นที่นี่ว่าเราให้พารามิเตอร์ตัวแรกเป็นฟังก์ชัน จากนั้นพารามิเตอร์ที่สองเป็นแบบวนซ้ำได้
วิธีคิดที่ดีคือเราต้องการดำเนินการบางอย่างที่นี่
ดังนั้นฟังก์ชันและข้อมูลที่เราต้องการดำเนินการ
สมมุติในกรณีของเรา หนึ่ง สอง สาม
แล้วเราต้องการดำเนินการอย่างไร?
หนึ่งสองสาม.
เราต้องการคูณด้วยสอง, สมมุติว่าคูณ.
โดยสอง
ตอนนี้ฉันต้องเลื่อนลงมาเพราะเราต้องกำหนดฟังก์ชันก่อน
แล้วรันแบบนี้
แทนที่จะพิมพ์แบบนี้ มาทำกัน
พิมพ์.
แบบนี้ถ้าผมรัน
ฉันได้รับวัตถุแผนที่ที่ตำแหน่งหน่วยความจำนี้
และ MAP จะมอบอ็อบเจ็กต์นี้ให้กับเราโดยอัตโนมัติซึ่งมันสร้างขึ้นในหน่วยความจำนี้
เพื่อให้เราดูได้จริง เราต้องแปลงเป็นรายการแบบนี้
ดังนั้นถ้าฉันเรียกใช้สิ่งนี้
มันบอกว่าออนไลน์สำหรับวัตถุ int'l ไม่สามารถทำซ้ำได้
ก็เพราะว่าด้วยแผนที่ เราไม่จำเป็นต้องสร้างรายการอีกต่อไป มากกว่าการต่อท้ายรายการ
คุณเห็นไหม สิ่งที่ดีเกี่ยวกับแผนที่คือ ฉันให้ข้อมูลบางอย่างกับมัน จากนั้นข้อมูลนี้จะถูกดำเนินการโดยสิ่งนี้
และสิ่งที่เราต้องทำกับฟังก์ชันแผนที่ก็คือมีฟังก์ชันที่ส่งคืน
รายการส่วนนี้คูณสอง
ดังนั้นแทนที่จะมีรหัสทั้งหมดนี้ สิ่งที่เราต้องทำคือพูดว่า return
สิ่งของ.
คูณสอง.
ลองเปลี่ยนพารามิเตอร์นี้เป็นรายการ
และดูรายละเอียดโค้ดอีกเล็กน้อย
ด้วยแผนที่ฉันพูดว่า เฮ้ ฉันต้องการให้คุณเรียกใช้ฟังก์ชันนี้
คูณด้วยสอง
สังเกตว่าฉันไม่มีวงเล็บด้วยซ้ำเพราะฉันไม่จำเป็นต้องเรียกมันว่า map ทำเพื่อฉัน
แผนที่บอกว่า เฮ้ แค่ให้ฟังก์ชั่นกับฉัน ฉันจะจัดการที่เหลือเอง
ฉันจะไม่เรียกใช้ฟังก์ชันที่นี่
แผนที่จะเรียกใช้ฟังก์ชันให้ฉัน
ฉันแค่พูดว่า เฮ้ เมื่อฉันเรียก map แบบนี้
ฉันต้องการให้คุณใช้ฟังก์ชันนี้ในที่อยู่หน่วยความจำนี้และใช้ข้อมูลนี้
จำกระบวนทัศน์การเขียนโปรแกรมการทำงานของเรา
เรามีข้อมูลที่จะดำเนินการ เราจึงแยกข้อมูลทั้งสองออกจากกัน
ตอนนี้ฟังก์ชันนี้จะนำแต่ละไอเท็มมาอยู่ในระยะของเรา
ในกรณีของเรา ครั้งแรกรอบรายการจะเป็นหนึ่ง จากนั้นสอง และสาม
จากนั้นสิ่งที่เราต้องทำคือส่งคืนสิ่งที่เราต้องการให้มีผลกับรายการนั้น
ในกรณีของเราคือสอง
ดังนั้นโดยการทำแผนที่นี้จะเรียกใช้ฟังก์ชันนี้โดยอัตโนมัติสำหรับเราและวนซ้ำรายการทั้งหมดใน
iterable และส่งคืนวัตถุแผนที่ใหม่ให้เราซึ่งเราจะแปลงเป็นรายการหากฉันเรียกใช้สิ่งนี้
ฉันได้สองต่อหก?
ทีนี้ นี่คือส่วนที่เรียบร้อย
ถ้าฉันทำ สมมติว่ารายการของฉันและฉันพูดว่า หนึ่ง สอง สาม
และฉันเปลี่ยนรายการของฉันที่นี่
แบบนี้.
และในตอนท้าย พิมพ์รายการของฉันด้วย
ถ้าฉันคลิกเรียกใช้
คุณจะเห็นว่ารายการของฉันไม่เปลี่ยนแปลง
จดจำ?
ฟังก์ชันบริสุทธิ์คือฟังก์ชันที่ไม่กระทบต่อโลกภายนอก
และวิธีนี้ทำให้แผนที่ทำให้เราสร้างรายการใหม่ทั้งหมดได้
ที่ไม่ได้แก้ไขรายการของฉัน
ดังนั้นรายการของฉันจึงไม่เปลี่ยนรูปใช่ไหม
เราไม่เปลี่ยนมัน
และทั้งหมดที่ทำคือฟังก์ชันแผนที่ ดูแลและส่งคืนรายการใหม่ให้เรา
แต่เราไม่กระทบต่อโลกภายนอก
ไม่มีผลข้างเคียงในฟังก์ชันนี้
เราแค่คูณรายการกับรายการด้วยสอง แต่สร้างรายการใหม่จากสิ่งนี้
และทุกครั้งที่เราป้อนค่าเดิม มันจะได้ผลลัพธ์ที่เหมือนกัน
เยี่ยมมาก
และแผนที่ก็มีประโยชน์อย่างยิ่ง เพราะเมื่อใดก็ตามที่เรามีบางอย่างที่เราทำซ้ำได้และเราต้องการที่จะเปลี่ยนแปลง
สมมติว่าเรามีอีเมลหรือชื่อผู้ใช้ และเราจำเป็นต้องอัปเดตชื่อผู้ใช้ให้เป็นตัวพิมพ์ใหญ่ทั้งหมด
ในกรณีนั้น เราสามารถวนซ้ำและใช้ฟังก์ชันแผนที่ เปลี่ยนชื่อผู้ใช้ทั้งหมดในรายการของเราเป็นอักษรตัวพิมพ์ใหญ่
MAP จะเป็นหนึ่งในฟังก์ชันที่คุณใช้บ่อยในอาชีพการเขียนโปรแกรมของคุณ
และฉันหวังว่าคุณจะเห็นว่าที่นี่สะอาดและดีเพียงใด โดยใช้กระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชัน
มาต่อกันที่ตอนต่อไปกันเลย
มาพูดถึงตัวกรองกัน
ต่อไป.