ฉันเชื่อว่าทุกคนรู้ดีว่า anonymous หมายถึงการไม่มีชื่อ บางครั้งเราไม่จำเป็นต้องตั้งชื่อฟังก์ชันเมื่อเขียนโปรแกรม ในเวลานี้ เราสามารถใช้นิพจน์ lambda เพื่อใช้ฟังก์ชันที่ไม่ระบุชื่อใน Python
ลองใช้ตัวอย่างเพื่อแนะนำการใช้ ฟังก์ชัน lambda อย่างง่าย ตัวแปร m คือค่าที่เราป้อน เราจำเป็นต้องใช้ฟังก์ชันที่ไม่ระบุชื่อเพื่อส่งกลับผลรวมของกำลังสองของ m ค่าคือ 4
รหัสมีดังนี้:
m=int(input('Please enter a number:'))#m คือค่าอินพุต a=lambdax:x*x#Useตัวแปร a เพื่อสร้างนิพจน์ print('ค่าที่ส่งคืนคือ:',a(m) )
ผลลัพธ์คือ:
โปรดป้อนตัวเลข: 6 ค่าที่ส่งคืนคือ: 36
มาดูโครงสร้างของมันตามรูปด้านล่าง:
ลองใช้ฟังก์ชันที่ไม่ระบุชื่อผ่านตัวอย่าง:
m=int(input('Please enter a number:'))#m คือค่าอินพุต a=lambdax:x+10*10+x*xprint('The return value is:',a(m))
ผลลัพธ์คือ:
โปรดป้อนตัวเลข: 5 ค่าที่ส่งคืนคือ: 130
จากสองตัวอย่างข้างต้น เราสามารถเข้าใจได้ว่านิพจน์แลมบ์ดาเทียบเท่ากับการบีบอัดฟังก์ชันให้เป็นโค้ดบรรทัดเดียว จากนั้นจึงเรียกใช้ฟังก์ชันโดยตรงผ่านคำจำกัดความของตัวแปร วิธีนี้สามารถลดความซับซ้อนของโค้ดของเราได้
เรายังสามารถใช้ฟังก์ชันที่ไม่ระบุชื่อตามลำดับได้ การใช้ฟังก์ชันที่ไม่ระบุชื่อสามารถช่วยให้เรากรองข้อมูลได้อย่างรวดเร็ว ดูตัวอย่างต่อไปนี้:
เป็นที่รู้กันว่ารายการคือ [1,4,6,9,12,23,25,28,36,38,41,56,63,77,88,99] เราต้องส่งคืนเลขคู่ในนั้น และเก็บไว้ในรายการระหว่าง
เราสามารถใช้ฟังก์ชันตัวกรองในการกรองได้
รหัสมีดังนี้:
my_list=[1,4,6,9,12,23,25,28,36,38,41,56,63,77,88,99]print(list(filter(lambdax:x%2==0, ของฉัน_รายการ)))
ผลลัพธ์คือ:
[4,6,12,28,36,38,56,88]
เราวิเคราะห์นิพจน์นี้จากภายในสู่ภายนอก ออบเจ็กต์เดิมในฟังก์ชัน filter() คือวิธีการกรองของเรา และอย่างหลังคือออบเจ็กต์ที่เราต้องการกรอง จากนั้นเราจะจัดเก็บข้อมูลเหล่านี้ไว้ในรายการโดยใช้ฟังก์ชัน list() . และสุดท้ายก็พิมพ์ออกมา วิธีนี้สามารถช่วยให้เราบูรณาการข้อมูลได้อย่างรวดเร็ว
นอกจากนี้เรายังสามารถกำหนดกฎผ่านฟังก์ชันที่ไม่ระบุชื่อเมื่อทำการเรียงลำดับ
อันดับแรก เรารู้ว่าชุดของรายการคือ [('Tuple A',15,33), ('Tuple B',25,26), ('Tuple C',7,7)] องค์ประกอบประกอบด้วยชื่อของแต่ละทูเพิลและค่าต่ำสุดและสูงสุด เราจำเป็นต้องเรียงลำดับรายการตามความแตกต่างระหว่างค่าสูงสุดและต่ำสุดของทูเพิลของแต่ละคน ดูโค้ดต่อไปนี้
my_list=[('ทูเพิล A',15,33),('ทูเพิล B',25,26),('ทูเพิล C',7,7)]my_list.sort(key=lambdax:x[2 ]-x [1])#ใช้คีย์เวิร์ดเพื่อแนะนำวิธีการเรียงลำดับ ขึ้นอยู่กับความแตกต่างระหว่างองค์ประกอบที่สามและองค์ประกอบที่สอง ดัชนีที่เกี่ยวข้องคือ 2 และ 1print(my_list)
โครงสร้างผลลัพธ์คือ:
[('ทูเพิล C',7,7),('ทูเพิล B',25,26),('ทูเพิล A',15,33)]
เราสามารถคำนวณแบบง่ายๆ ก่อน ความแตกต่างคือ 18, 1 และ 0 ตามลำดับ ดังนั้นลำดับควรเป็น C, B และ A ผลลัพธ์ที่ส่งคืน x[2]-x[1] ในนิพจน์แลมบ์ดาที่เราได้รับ ความแตกต่างแล้วเรียงลำดับตามความแตกต่าง
ฟังก์ชั่นที่ไม่เปิดเผยตัวตนมีความสำคัญอย่างยิ่งเมื่อกรองข้อมูลสามารถช่วยเราแก้ไขปัญหาข้อมูลที่ซับซ้อนและยุ่งยากได้อย่างรวดเร็ว ในเวลาเดียวกันก็สามารถเพิ่มประสิทธิภาพโค้ดของเราและทำให้โค้ดโดยรวมกระชับยิ่งขึ้น เราจะหยุดที่นี่ในบทต่อไป ในส่วนนี้ เราจะเรียนรู้ฟังก์ชันพื้นฐานสามฟังก์ชันในฟังก์ชันต่างๆ