มีฟังก์ชันพื้นฐานสามอย่างใน Python ได้แก่ filter(), map() และ lower() ซึ่งให้ฟังก์ชันการกรอง การทำแผนที่ และการรวมกลุ่มตามลำดับ ในส่วนก่อนหน้านี้ เราใช้ฟังก์ชัน filter() ร่วมกับฟังก์ชันที่ไม่ระบุตัวตน ด้านล่างนี้เราจะแนะนำการใช้งานโดยละเอียด
เมื่อกรองและกรองข้อมูล เรามักจะใช้ฟังก์ชัน filter() เพื่อช่วยเราแก้ปัญหาได้อย่างรวดเร็ว รูปแบบไวยากรณ์คือ:
ตัวกรอง (ฟังก์ชัน, วัตถุที่ทำซ้ำได้)
ในฟังก์ชัน filter ให้ใส่ filtering หรือ filtering method ของเรา ซึ่งก็คือ ชื่อฟังก์ชัน ไว้ด้านหน้า และเก็บ iterable object ไว้ที่ด้านหลัง ลองดูตัวอย่างต่อไปนี้:
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))#แค่ต้องการชื่อฟังก์ชัน ไม่จำเป็นต้องใช้พารามิเตอร์
ผลลัพธ์ที่ได้:
<ตัวกรองวัตถุ0x034C2DD8>
จากตัวอย่างนี้ อันดับแรกเรากำหนดฟังก์ชัน test() ซึ่งจะส่งคืนค่าถ้า x เป็นเลขคู่ จากนั้นใช้ฟังก์ชัน test() เพื่อกรองรายการ my_list ผ่านฟังก์ชัน filter() แต่ผลลัพธ์ที่ได้คือ < filter object ที่ 0x034C2DD8> ที่นี่เราต้องทราบว่าค่าที่ส่งคืนของฟังก์ชัน filter() เป็นอ็อบเจ็กต์ที่ทำซ้ำได้ และเราจำเป็นต้องเข้าถึงค่าซ้ำๆ หรือใช้ฟังก์ชัน list() เพื่อบังคับให้แปลงประเภท
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]พิมพ์(ตัวกรอง(ทดสอบ,my_list))foriinfilter(ทดสอบ,my_list):พิมพ์('หลังจากการวนซ้ำข้อมูล: ',i)print('ใช้ list() วิธีการ:',list(filter(test,my_list)))
ผลลัพธ์คือ:
ข้อมูลในการวนซ้ำ: 2 ข้อมูลในการวนซ้ำ: 4 ข้อมูลในการวนซ้ำ: 6 การใช้เมธอด list(): [2, 4, 6]
เราเคยใช้ฟังก์ชัน map() หลายครั้งแล้ว ตัวอย่างเช่น เมื่อเราป้อนค่าหลายค่า เราจะใช้ฟังก์ชัน map() เมื่อเราต้องการป้อนค่าสี่ค่า:
a,b,c,d=map(int,input().split())พิมพ์(a,b,c,d)
รูปแบบไวยากรณ์ของฟังก์ชัน map() คือ:
map (ฟังก์ชัน, วัตถุที่ทำซ้ำได้)
เมื่อใช้ฟังก์ชัน map() เราจะใช้ฟังก์ชันนี้ในการประมวลผลข้อมูลเป็นส่วนใหญ่ ข้อมูลในวัตถุที่ทำซ้ำได้จะถูกเก็บไว้หลังจากที่ฟังก์ชันประมวลผลแล้ว เรายังใช้ฟังก์ชัน list() สำหรับการจัดเก็บต่อไป
ขั้นแรกเรามาดูตัวอย่างข้างต้นของการป้อนค่าสี่ค่า Int เป็นฟังก์ชัน และค่าที่ป้อนด้วย input().splite เป็นวัตถุที่สามารถทำซ้ำได้ ซึ่งจะถูกจัดเก็บไว้ในวัตถุแผนที่หลังจากที่ได้รับการประมวลผลโดยฟังก์ชัน int
เราสามารถใช้ฟังก์ชัน map() เพื่อประมวลผลข้อมูลทั้งหมดในลำดับผ่านฟังก์ชัน ดูตัวอย่างต่อไปนี้:
เราจัดเก็บตัวอักษรไว้ในรายการ และหากมีอักษรตัวพิมพ์เล็กอยู่ ให้กำหนดให้เป็นตัวพิมพ์ใหญ่
รหัสมีดังนี้:
deftest(x):ifx.islower():returnx.upper()else:returnxmy_list=['d','o','t','C','p','P']พิมพ์ (รายการ (แผนที่ (ทดสอบ my_list)))
ผลลัพธ์คือ:
['D','O','T','C','P','P']
ฟังก์ชัน test() จะตัดสิน x ก่อน หากเป็นตัวอักษรพิมพ์เล็ก ก็จะส่งคืนตัวอักษรพิมพ์ใหญ่ หากไม่ใช่ตัวอักษรพิมพ์เล็ก ก็จะส่งกลับค่าของมัน
ฟังก์ชันลด () ใช้เพื่อรวมวัตถุที่ทำซ้ำได้ผ่านวิธีการทำงาน
รูปแบบไวยากรณ์คือ:
ลด (ฟังก์ชัน, วัตถุที่ทำซ้ำได้ [, ค่าเริ่มต้น])
ตัวอย่างเช่น เรารู้ว่ารายการคือ [1,2,3,4] และเราจำเป็นต้องค้นหาผลรวมของรายการทั้งหมดในรายการคูณตามลำดับ เราสามารถใช้ฟังก์ชันลด () ได้
ฟังก์ชัน fromfunctoolsimportreduce#reduce ถูกกำหนดไว้ในโมดูล functools และจำเป็นต้องแนะนำ deftest(x,y):returnx*ymy_list=[1,2,3,4]print(reduce(test,my_list))
ผลลัพธ์คือ:
บรรทัดแรกของโค้ดแนะนำวิธีการนี้ และโมดูลจะอธิบายในภายหลัง ฟังก์ชัน test() จะส่งคืนข้อมูลสองรายการที่จะคูณ จากนั้นรายการ my_list จะถูกประมวลผลผ่านฟังก์ชันลด ()
กระบวนการประมวลผลมีดังนี้:
ดำเนินการขั้นตอนแรกก่อน จากนั้นจึงได้ผลลัพธ์และคูณกับขั้นตอนถัดไป จากนั้นไปที่หลักสุดท้าย
โดยทั่วไปจะใช้สองฟังก์ชันแรกจากทั้งสามฟังก์ชันนี้ การเรียนรู้ฟังก์ชันทั้งสามนี้สามารถช่วยให้เราแก้ไขปัญหาที่ซับซ้อนต่างๆ ได้ ในส่วนถัดไป เราจะเรียนรู้เกี่ยวกับฟังก์ชันแบบเรียกซ้ำ