แผนที่กรองและลดฟังก์ชันใน Python: สิ่งที่คุณต้องรู้



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

Python มีฟังก์ชันในตัวมากมายที่กำหนดไว้ล่วงหน้าและผู้ใช้ปลายทางสามารถใช้งานได้โดยเพียงแค่เรียกใช้ ฟังก์ชันเหล่านี้ไม่เพียงทำให้การทำงานของโปรแกรมเมอร์ง่ายขึ้น แต่ยังสร้างสภาพแวดล้อมการเข้ารหัสมาตรฐานอีกด้วย ในบทความนี้คุณจะได้เรียนรู้เกี่ยวกับฟังก์ชั่นที่น่าประทับใจสามอย่าง ได้แก่ map () กรองและลด () ใน .

ก่อนที่จะดำเนินการต่อเรามาดูเนื้อหา:





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

ฟังก์ชัน map (), filter () และ Reduce () ใน Python คืออะไร?

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



ฟังก์ชัน map ():

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

ซิงค์:

แผนที่ (ฟังก์ชัน iterables)



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

การใช้ฟังก์ชันที่ผู้ใช้กำหนดและแลมบ์ดาภายใน:

ฟังก์ชันที่ผู้ใช้กำหนดเองภายในแผนที่ ():

ฟังก์ชัน map () สามารถใช้ฟังก์ชันที่ผู้ใช้กำหนดเป็นพารามิเตอร์ได้ พารามิเตอร์ของฟังก์ชันเหล่านี้กำหนดโดยผู้ใช้หรือโปรแกรมเมอร์โดยเฉพาะ ตัวอย่างเช่น:

ตัวอย่าง:

def newfunc (a): ส่งคืน a * a x = map (newfunc, (1,2,3,4)) #x คือการพิมพ์วัตถุแผนที่ (x) (ชุด (x))

เอาท์พุท:

{16, 1, 4, 9}

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

โปรแกรม sas ใช้สำหรับอะไร

บันทึก: ผลลัพธ์ไม่ได้เรียงตามค่าของ iterables เนื่องจากฉันใช้ฟังก์ชัน set () คุณยังสามารถใช้ฟังก์ชัน list () หรือ tuple () ได้เช่น:

ตัวอย่าง:

def newfunc (a): ส่งคืน a * a x = map (newfunc, (1,2,3,4)) #x คือการพิมพ์วัตถุแผนที่ (x) พิมพ์ (รายการ (x))

เอาท์พุท:

[1, 4, 9, 16]

คุณสามารถส่งผ่านรายการพารามิเตอร์ได้มากกว่าหนึ่งรายการเช่นกัน ตัวอย่างเช่น:

ตัวอย่าง:

def func (a, b): ส่งคืน a + b a = map (func, [2, 4, 5], [1,2,3]) พิมพ์ (a) พิมพ์ (ทูเปิล (a))

เอาท์พุท:

(3, 6, 8)

ตอนนี้ให้เราดูว่าคุณสามารถใช้ได้อย่างไร ฟังก์ชันแลมบ์ดา ภายในฟังก์ชัน map ()

ฟังก์ชัน Lambda ภายในแผนที่ ():

ฟังก์ชันแลมบ์ดาเป็นฟังก์ชันที่มีชื่อใด ๆ ฟังก์ชันเหล่านี้มักถูกจัดให้เป็นพารามิเตอร์สำหรับฟังก์ชันอื่น ๆ ตอนนี้ให้เราลองฝังฟังก์ชันแลมบ์ดาไว้ในฟังก์ชัน map () พิจารณาตัวอย่างต่อไปนี้:

ตัวอย่าง:

tup = (5, 7, 22, 97, 54, 62, 77, 23, 73, 61) newtuple = tuple (แผนที่ (lambda x: x + 3, tup)) พิมพ์ (newtuple)

เอาท์พุท:

(8, 10, 25, 100, 57, 65, 80, 26, 76, 64)

ผลลัพธ์ข้างต้นเป็นผลมาจากการใช้นิพจน์แลมบ์ดา (x + 3) กับแต่ละรายการที่มีอยู่ในทูเปิล

ฟังก์ชันตัวกรอง ():

ฟังก์ชัน filter () ใช้เพื่อสร้างรายการเอาต์พุตที่ประกอบด้วยค่าที่ฟังก์ชันส่งคืนเป็นจริง ไวยากรณ์ของมันมีดังนี้:

ซิงค์:

ตัวกรอง (ฟังก์ชัน iterables)

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

ตัวอย่าง:

def func (x): if x> = 3: return x y = filter (func, (1,2,3,4)) print (y) print (list (y))

เอาท์พุท:

[3. 4]

อย่างที่คุณเห็น y คือออบเจ็กต์ตัวกรองและรายการคือรายการของค่าที่เป็นจริงสำหรับเงื่อนไข (x> = 3)

การใช้แลมด้าภายในตัวกรอง ():


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

ตัวอย่าง:

y = ตัวกรอง (แลมบ์ดา x: (x> = 3), (1,2,3,4)) พิมพ์ (รายการ (y))

เอาท์พุท: [3. 4]

โค้ดด้านบนสร้างเอาต์พุตเดียวกันกับฟังก์ชันก่อนหน้า

ฟังก์ชันลด ():

ฟังก์ชันลด () ตามชื่ออธิบายใช้ฟังก์ชันที่กำหนดกับ iterables และส่งกลับค่าเดียว

ลดแผนที่ลดตัวกรอง edureka

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

ซิงค์:

ลด (ฟังก์ชั่นซ้ำ)

ฟังก์ชันนี้กำหนดนิพจน์ที่ต้องใช้กับการวนซ้ำ จำเป็นต้องนำเข้าฟังก์ชันนี้จาก functools โมดูล . ตัวอย่างเช่น:

ตัวอย่าง:

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

เอาท์พุท: 187

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

ฟังก์ชัน map () ตัวกรอง () และลด () ใน Python สามารถใช้ร่วมกันได้

การใช้ฟังก์ชัน map () ตัวกรอง () และลด () ร่วมกัน:

เมื่อคุณทำเช่นนี้ฟังก์ชันภายในจะได้รับการแก้ไขก่อนจากนั้นฟังก์ชันภายนอกจะทำงานกับเอาต์พุตของฟังก์ชันภายใน

ขั้นแรกให้เราลองส่งฟังก์ชัน filter () เป็นพารามิเตอร์ไปยังฟังก์ชัน map ()

การใช้ตัวกรอง () ภายในแผนที่ ():

รหัสที่ระบุด้านล่างขั้นแรกจะตรวจสอบเงื่อนไข (x> = 3) ว่าเป็นจริงสำหรับรายการซ้ำ จากนั้นผลลัพธ์จะถูกแมปโดยใช้ฟังก์ชัน map ()

php print_r อาร์เรย์

ตัวอย่าง:

c = map (แลมบ์ดา x: x + x, ฟิลเตอร์ (แลมบ์ดา x: (x> = 3), (1,2,3,4))) พิมพ์ (รายการ (c))

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

หากคุณกรองจำนวนเต็มที่มากกว่าหรือเท่ากับ 3 ออกจากทูเปิลที่กำหนดคุณจะได้ผลลัพธ์เป็น [3,4] จากนั้นถ้าคุณแมปโดยใช้เงื่อนไข (x + x) คุณจะได้รับ [6,8] ซึ่งเป็นผลลัพธ์

การใช้แผนที่ () ภายในตัวกรอง ():


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

ตัวอย่าง:

c = filter (lambda x: (x> = 3), map (lambda x: x + x, (1,2,3,4))) #lambda x: (x> = 3) print (list (c) )

เอาท์พุท: [4, 6, 8]

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

เอาต์พุตของฟังก์ชันภายในจะลดลงตามเงื่อนไขที่ให้มากับฟังก์ชันลด ()

ตัวอย่าง:

d = ลด (แลมบ์ดา x, y: x + y, แผนที่ (แลมด้า x: x + x, ฟิลเตอร์ (แลมบ์ดา x: (x> = 3), (1,2,3,4)))) พิมพ์ (d)

เอาท์พุท: 14

ผลลัพธ์เป็นผลลัพธ์ของ [6,8] ซึ่งเป็นผลลัพธ์ของฟังก์ชันแผนที่ภายใน () และตัวกรอง ()

ด้วยเหตุนี้เราจึงมาถึงตอนท้ายของบทความนี้บนแผนที่ () ตัวกรอง () และลดฟังก์ชันใน Python ฉันหวังว่าคุณจะเข้าใจทุกอย่างชัดเจน ให้แน่ใจว่าคุณฝึกฝนให้มากที่สุดและเปลี่ยนประสบการณ์

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก“ map () ตัวกรอง () และลด () ฟังก์ชันใน Python” และเราจะติดต่อกลับโดยเร็วที่สุด

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