แลมด้ามีฟังก์ชั่นอะไรบ้างและจะใช้งานอย่างไร?



เรียนรู้ฟังก์ชัน Python lambda พร้อมกับความแตกต่างระหว่างฟังก์ชันปกติและฟังก์ชันแลมบ์ดาและวิธีใช้ในตัวกรอง (), แผนที่ (), ลด ()

ชื่อคือรูปแบบที่ใช้เพื่ออ้างถึงหรือกล่าวถึงเอนทิตีใด ๆ เกือบทุกสิ่งรอบตัวเรามีชื่อ โลกของการเขียนโปรแกรมก็เป็นไปตามนี้เช่นกัน แต่ต้องตั้งชื่อทุกอย่างหรือไม่? หรือคุณมีบางอย่างที่ 'ไม่เปิดเผยตัวตน' ได้ไหม คำตอบคือใช่ ' ให้ Lambda Functions หรือที่เรียกว่าฟังก์ชัน Anonymous ซึ่งแท้จริงแล้วไม่มีชื่อ ดังนั้นเรามาเรียนรู้เกี่ยวกับ 'Anonymous Mysteries' ของ Python ตามลำดับต่อไปนี้

มาเริ่มกันเลย :)





ทำไมต้องใช้ Python Lambda Functions


จุดประสงค์หลักของฟังก์ชันที่ไม่ระบุตัวตนเกิดขึ้นเมื่อคุณต้องการฟังก์ชันเพียงครั้งเดียว สามารถสร้างได้ทุกที่ที่ต้องการ ด้วยเหตุนี้ Python Lambda Functions จึงเรียกอีกอย่างว่าฟังก์ชัน throw-away ซึ่งใช้ร่วมกับฟังก์ชันที่กำหนดไว้ล่วงหน้าอื่น ๆ เช่น filter (), map () เป็นต้นฟังก์ชันเหล่านี้ช่วยลดจำนวนบรรทัดของโค้ดของคุณเมื่อเปรียบเทียบกับ ปกติ .

เพื่อพิสูจน์สิ่งนี้เรามาดูข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชัน Python Lambda กัน



Python Lambda Functions คืออะไร?


ฟังก์ชัน Python Lambda เป็นฟังก์ชันที่ไม่มีชื่อใด ๆ พวกเขาเรียกอีกอย่างว่าฟังก์ชันนิรนามหรือนิรนาม คำว่า 'lambda' ไม่ใช่ชื่อ แต่เป็นคำหลัก คีย์เวิร์ดนี้ระบุว่าฟังก์ชันที่ตามมาไม่ระบุชื่อ

เมื่อคุณทราบแล้วว่าฟังก์ชันนิรนามเหล่านี้อ้างถึงอะไรแล้วให้เราไปต่อเพื่อดูว่าคุณเขียนฟังก์ชัน Python Lambda เหล่านี้อย่างไร

จะเขียน Lambda Functions ใน Python ได้อย่างไร?

ฟังก์ชัน Lambda ถูกสร้างขึ้นโดยใช้ตัวดำเนินการแลมบ์ดาและไวยากรณ์เป็นดังนี้:



ซิงค์:

แลมบ์ดาอาร์กิวเมนต์: นิพจน์

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

ตัวอย่าง:

แลมบ์ดา:“ ระบุวัตถุประสงค์”

ที่นี่ฟังก์ชันแลมบ์ดาไม่ได้รับข้อโต้แย้งใด ๆ

ตัวอย่าง:

แลมบ์ดากหนึ่ง:“ ระบุการใช้ไฟล์หนึ่ง'

ที่นี่แลมบ์ดากำลังรับอินพุตหนึ่งรายการซึ่งเป็นไฟล์หนึ่ง.

ชนิดข้อมูลวันที่ t sql

ในทำนองเดียวกันคุณสามารถมี lambda aหนึ่ง, ถึง2, ถึง3..ถึงn.

เรามาดูตัวอย่างบางส่วนเพื่อสาธิตสิ่งนี้:

ตัวอย่างที่ 1:

a = lambda x: x * x พิมพ์ (a (3))

เอาท์พุท: 9

ตัวอย่างที่ 2:

a = lambda x, y: x * y พิมพ์ (a (3,7))

เอาท์พุท: ยี่สิบเอ็ด

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

ในทางกลับกันฟังก์ชัน python ปกติสามารถใช้คำสั่งจำนวนเท่าใดก็ได้ในนิยามฟังก์ชัน

ฟังก์ชัน Anonymous ลดขนาดของโค้ดได้อย่างไร?

ก่อนที่จะเปรียบเทียบจำนวนโค้ดที่ต้องการก่อนอื่นเรามาเขียนไวยากรณ์ของ และเปรียบเทียบกับฟังก์ชันแลมด้าที่อธิบายไว้ก่อนหน้านี้

ฟังก์ชันปกติใด ๆ ใน Python ถูกกำหนดโดยใช้ไฟล์ def คีย์เวิร์ดดังนี้:

ซิงค์:

def function_name (พารามิเตอร์):
คำสั่ง (s)

อย่างที่คุณเห็นจำนวนรหัสที่ต้องการสำหรับฟังก์ชันแลมบ์ดานั้นค่อนข้างน้อยกว่าฟังก์ชันปกติ

ให้เราเขียนตัวอย่างที่เราทำก่อนหน้านี้โดยใช้ฟังก์ชันปกติในขณะนี้

ตัวอย่าง:

def my_func (x): ส่งคืน x * x พิมพ์ (my_func (3))

เอาท์พุท: 9

ดังที่คุณเห็นในตัวอย่างข้างต้นเราจำเป็นต้องมีคำสั่ง return ภายใน my_func เพื่อประเมินค่าของกำลังสองของ 3 ในทางกลับกันฟังก์ชัน lambda ไม่ได้ใช้ประโยชน์จากคำสั่ง return นี้ แต่เป็นเนื้อความของฟังก์ชัน anonymous เขียนในบรรทัดเดียวกับฟังก์ชันหลังจากสัญลักษณ์โคลอน ดังนั้นขนาดของฟังก์ชันจึงเล็กกว่า my_func

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

เป็นคำถามที่ถูกต้อง แต่ประเด็นก็คือนี่ไม่ใช่วิธีที่ถูกต้องในการใช้ฟังก์ชันที่ไม่ระบุตัวตนเหล่านี้

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

ฟังก์ชัน Python Lambda ภายในฟังก์ชันที่ผู้ใช้กำหนด:

ดังที่ได้กล่าวมาแล้วฟังก์ชันแลมบ์ดาถูกใช้ในฟังก์ชันอื่น ๆ เพื่อทำเครื่องหมายข้อได้เปรียบที่ดีที่สุด

ตัวอย่างต่อไปนี้ประกอบด้วย new_func ซึ่งเป็นฟังก์ชัน python ปกติที่รับหนึ่งอาร์กิวเมนต์ x จากนั้นอาร์กิวเมนต์นี้จะถูกเพิ่มเข้าไปในอาร์กิวเมนต์ y ที่ไม่รู้จักซึ่งจัดทำผ่านฟังก์ชันแลมบ์ดา

ตัวอย่าง:

def new_func (x): return (lambda y: x + y) t = new_func (3) u = new_func (2) print (t (3)) print (u (3))

เอาท์พุท:

6
5
ดังที่คุณเห็นในตัวอย่างข้างต้นฟังก์ชันแลมบ์ดาซึ่งมีอยู่ภายใน new_func จะถูกเรียกเมื่อใดก็ตามที่เราใช้ new_func () แต่ละครั้งเราสามารถส่งผ่านค่าแยกกันไปยังอาร์กิวเมนต์

ตอนนี้คุณได้เห็นวิธีการใช้ฟังก์ชันที่ไม่ระบุชื่อภายในฟังก์ชันลำดับที่สูงกว่าแล้วตอนนี้ให้เราก้าวไปข้างหน้าเพื่อทำความเข้าใจหนึ่งในการใช้งานที่ได้รับความนิยมมากที่สุดซึ่งอยู่ในวิธีการกรอง (), แผนที่ () และลด ()

วิธีใช้ฟังก์ชัน Anonymous ภายในตัวกรอง (), แผนที่ () และลด ():

ฟังก์ชันนิรนามภายใน กรอง():

กรอง():

วิธีการกรอง () ใช้เพื่อกรองรายการที่กำหนด (รายการชุด ฯลฯ ) ด้วยความช่วยเหลือของฟังก์ชันอื่นส่งผ่านเป็นอาร์กิวเมนต์เพื่อทดสอบองค์ประกอบทั้งหมดว่าเป็นจริงหรือเท็จ

ไวยากรณ์ของฟังก์ชันนี้คือ:

ซิงค์:

ตัวกรอง (ฟังก์ชันทำซ้ำได้)

เปลี่ยนกรณีในโปรแกรมตัวอย่าง java

ลองพิจารณาตัวอย่างต่อไปนี้:

ตัวอย่าง:

my_list = [2,3,4,5,6,7,8] new_list = list (ตัวกรอง (แลมบ์ดา a: (a / 3 == 2), my_list)) พิมพ์ (new_list)

เอาท์พุท: [6]

ที่นี่ my_list คือรายการของค่าที่ทำซ้ำได้ซึ่งส่งผ่านไปยังฟังก์ชันตัวกรอง ฟังก์ชันนี้ใช้ฟังก์ชันแลมบ์ดาเพื่อตรวจสอบว่ามีค่าใด ๆ ในรายการหรือไม่ซึ่งจะเท่ากับ 2 เมื่อหารด้วย 3 เอาต์พุตประกอบด้วยรายการที่ตรงกับนิพจน์ที่มีอยู่ภายในฟังก์ชันที่ไม่ระบุชื่อ

แผนที่():

ฟังก์ชัน map () ใน Python เป็นฟังก์ชันที่ใช้ฟังก์ชันที่กำหนดกับ iterables ทั้งหมดและส่งกลับรายการใหม่

ซิงค์:

แผนที่ (ฟังก์ชันทำซ้ำได้)

เรามาดูตัวอย่างเพื่อสาธิตการใช้ฟังก์ชันแลมด้าภายในฟังก์ชัน map ():

ตัวอย่าง:

my_list = [2,3,4,5,6,7,8] new_list = list (แผนที่ (lambda a: (a / 3! = 2), li)) พิมพ์ (new_list)

เอาท์พุท:

[จริงแท้จริงจริงเท็จจริงจริง]

ผลลัพธ์ข้างต้นแสดงให้เห็นว่าเมื่อใดก็ตามที่ค่าของการวนซ้ำไม่เท่ากับ 2 เมื่อหารด้วย 3 ผลลัพธ์ที่ส่งกลับควรเป็น True ดังนั้นสำหรับองค์ประกอบทั้งหมดใน my_list จะคืนค่าจริงยกเว้นค่า 6 เมื่อเงื่อนไขเปลี่ยนเป็น False

ลด():

ฟังก์ชันลด () ใช้เพื่อนำฟังก์ชันอื่น ๆ ไปใช้กับรายการองค์ประกอบที่ส่งผ่านเป็นพารามิเตอร์ไปและส่งคืนค่าเดียวในที่สุด

ผสานการจัดเรียง pseudocode c ++

ไวยากรณ์ของฟังก์ชันนี้มีดังนี้:

ซิงค์:

ลด (ฟังก์ชันลำดับ)

ตัวอย่าง:

จาก functools นำเข้าลดลด (lambda a, b: a + b, [23,21,45,98])

ตัวอย่างข้างต้นแสดงในภาพต่อไปนี้:

ลดหลาม lambda-edureka

เอาท์พุท: 187

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

ด้วยเหตุนี้เราจึงปิดท้ายบทความเกี่ยวกับ 'Python Lambda' หวังว่าคุณจะชัดเจนกับทุกสิ่งที่แบ่งปันกับคุณ ให้แน่ใจว่าคุณฝึกฝนให้มากที่สุดและเปลี่ยนประสบการณ์

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก 'Python Lambda' และเราจะติดต่อกลับโดยเร็วที่สุด

หากต้องการรับความรู้เชิงลึกเกี่ยวกับ Python พร้อมกับแอพพลิเคชั่นต่างๆคุณสามารถลงทะเบียนเพื่อถ่ายทอดสด ด้วยการสนับสนุนตลอด 24 ชั่วโมงทุกวันและการเข้าถึงตลอดชีวิต