Python ฟังก์ชัน map() พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
Python `map()` จะนำฟังก์ชันที่กำหนดไปใช้กับทุกรายการในออบเจ็กต์ที่สามารถวนซ้ำได้ เช่น ลิสต์ ทูเปิล เซต พจนานุกรม หรือสตริง โดยจะคืนค่าเป็นออบเจ็กต์ `map` แบบ lazy ซึ่งสามารถแปลงได้ด้วย `list()` หรือวนซ้ำโดยใช้ลูป
วากยสัมพันธ์
map(function, iterator1,iterator2 ...iteratorN)
พารามิเตอร์
นี่คือพารามิเตอร์สำคัญสองประการ:
- ฟังก์ชั่น: ฟังก์ชันบังคับที่ต้องระบุให้กับ map() ซึ่งจะถูกนำไปใช้กับทุกรายการที่มีอยู่ใน iterator
- ตัววนซ้ำ: อ็อบเจ็กต์ที่สามารถวนซ้ำได้ซึ่งจำเป็นต้องมี อาจเป็นลิสต์ ทูเพิล หรืออื่นๆ คุณสามารถส่งอ็อบเจ็กต์ตัววนซ้ำหลายตัวไปยังฟังก์ชัน map() ได้
ราคาย้อนกลับ
ฟังก์ชัน `map()` จะนำฟังก์ชันที่กำหนดไปใช้กับทุกรายการที่อยู่ภายในตัววนซ้ำ และส่งคืนออบเจ็กต์แผนที่ที่สามารถวนซ้ำได้ เช่น ทูเปิล รายการ เป็นต้น
ฟังก์ชั่น map() ทำงานอย่างไร?
ฟังก์ชัน `map()` รับอินพุตสองอย่าง ได้แก่ ฟังก์ชันและออบเจ็กต์ที่สามารถวนซ้ำได้ ฟังก์ชันที่ส่งให้กับ `map()` เป็นฟังก์ชันปกติ และจะวนซ้ำค่าทั้งหมดที่มีอยู่ในออบเจ็กต์ที่สามารถวนซ้ำได้นั้น
ตัวอย่างเช่น พิจารณาว่าคุณมีรายการตัวเลข และคุณต้องการหากำลังสองของตัวเลขแต่ละตัว
เพื่อให้ได้ผลลัพธ์ เราจำเป็นต้องมีฟังก์ชันที่จะส่งคืนค่ากำลังสองของตัวเลขที่กำหนด ฟังก์ชันมีดังนี้:
def square(n): return n*n
รายการสิ่งของที่เราต้องการหาค่ากำลังสองมีดังต่อไปนี้:
my_list = [2,3,4,5,6,7,8,9]
ต่อไปเราจะใช้ฟังก์ชัน map() ที่มีอยู่แล้วในตัวเพื่อหาค่ากำลังสองของแต่ละรายการใน my_list
รหัสสุดท้ายมีดังนี้:
def square(n): return n*n my_list = [2,3,4,5,6,7,8,9] updated_list = map(square, my_list) print(updated_list) print(list(updated_list))
Output:
<map object at 0x0000002C59601748>
[4, 9, 16, 25, 36, 49, 64, 81]
ผลลัพธ์ของฟังก์ชัน map() ดังที่เห็นด้านบน คืออ็อบเจ็กต์แผนที่ที่แสดงบนหน้าจอ .
คุณจะต้องวนซ้ำผลลัพธ์จาก map() โดยใช้ลูป for หรือเมธอด list() เพื่อให้ได้ผลลัพธ์สุดท้าย ในโค้ดนี้ฉันใช้ list() เพื่อแสดงค่าภายในลิสต์ที่กำหนด
ดังนั้น การใช้ฟังก์ชัน map() ทำให้เราสามารถหาค่ากำลังสองของแต่ละจำนวนได้ รายการที่ส่งให้กับฟังก์ชัน map() คือ [2,3,4,5,6,7,8,9] และเมื่อใช้ฟังก์ชัน square() ผลลัพธ์ที่ได้คือ [4, 9, 16, 25, 36, 49, 64, 81]
ฟังก์ชัน map() จะนำฟังก์ชัน square() มาใช้กับทุกรายการในลิสต์ ตัวอย่างเช่น ฟังก์ชันนี้จะรับตัวแปร my_list และอัปเดตลิสต์ด้วยกำลังสองของแต่ละตัวเลข ผลลัพธ์จะถูกเก็บไว้ในตัวแปร updated_list
การใช้ map() กับ Python ฟังก์ชั่นในตัว
การขอ Python ฟังก์ชัน map() เป็นฟังก์ชันในตัวและยังสามารถใช้ร่วมกับฟังก์ชันในตัวอื่นๆ ได้ด้วย Pythonในตัวอย่างนี้ เราจะใช้ประโยชน์จาก Python round() เป็นฟังก์ชันในตัวที่ใช้ปัดเศษค่าที่กำหนดให้
ตัวอย่าง:
รายการที่ฉันมีคือ my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907] ฉันต้องการค่าที่ปัดเศษแล้วสำหรับแต่ละรายการในรายการ ดังนั้นเราจะใช้ฟังก์ชัน round() แทนฟังก์ชัน map()
my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907] updated_list = map(round, my_list) print(updated_list) print(list(updated_list))
Output:
<map object at 0x000000E65F901748>
[3, 4, 4, 6, 6, 8, 8, 10]
ฟังก์ชัน round() จะถูกนำไปใช้กับทุกรายการในลิสต์ และจะส่งคืนลิสต์ที่มีค่าทั้งหมดถูกปัดเศษ ดังที่แสดงในผลลัพธ์
การใช้ map() กับสตริงเป็นตัววนซ้ำ
เรายังสามารถใช้ map() กับสตริงได้อีกด้วย ใน Pythonสตริงมีลักษณะการทำงานคล้ายกับอาร์เรย์ ดังนั้นเราจึงสามารถใช้มันภายในฟังก์ชัน map() ได้อย่างง่ายดาย
ในตัวอย่างนี้ เรามีฟังก์ชัน myMapFunc() ที่ทำหน้าที่แปลงสตริงที่กำหนดให้เป็นตัวพิมพ์ใหญ่ ฟังก์ชัน myMapFunc() ถูกส่งไปยังฟังก์ชัน map() ฟังก์ชัน map() จะทำหน้าที่แปลงสตริงที่กำหนดให้เป็นตัวพิมพ์ใหญ่โดยการส่งสตริงนั้นไปยัง myMapFunc()
def myMapFunc(s): return s.upper() my_str = "welcome to guru99 tutorials!" updated_list = map(myMapFunc, my_str) print(updated_list) for i in updated_list: print(i, end="")
Output:
<map object at 0x000000DF2E711748>
WELCOME TO GURU99 TUTORIALS!
การใช้ map() กับ List ของ Numbers
ในการทำงานกับลิสต์ในฟังก์ชัน map() เราจะนำลิสต์ของตัวเลขมาคูณแต่ละตัวในลิสต์ด้วย 10
รายการที่เราจะใช้คือ [2,3,4,5,6,7,8,9] ฟังก์ชัน myMapFunc() จะทำการคูณตัวเลขที่กำหนดด้วย 10 โดยฟังก์ชันนี้จะถูกส่งไปยัง map() พร้อมกับรายการ
ตัวอย่าง:
def myMapFunc(n): return n*10 my_list = [2,3,4,5,6,7,8,9] updated_list = map(myMapFunc, my_list) print(updated_list) print(list(updated_list))
Output:
<map object at 0x000000EE2C061898>
[20, 30, 40, 50, 60, 70, 80, 90]
ผลลัพธ์ที่เราเห็นคือ ตัวเลขแต่ละตัวในรายการจะถูกคูณด้วย 10
การใช้ map() กับ Tuple
สิ่งอันดับเป็นวัตถุใน Python ซึ่งประกอบด้วยรายการที่คั่นด้วยเครื่องหมายจุลภาคและอยู่ในวงเล็บ ในตัวอย่างนี้ เราจะใช้ทูเปิลที่มีค่าเป็นสตริง ฟังก์ชันที่เราจะใช้จะแปลงค่าที่กำหนดให้เป็นตัวพิมพ์ใหญ่
ตัวอย่าง:
def myMapFunc(n): return n.upper() my_tuple = ('php','java','python','c++','c') updated_list = map(myMapFunc, my_tuple) print(updated_list) print(list(updated_list))
Output:
<map object at 0x0000009C3C3A16A0> ['PHP', 'JAVA', 'PYTHON', 'C++', 'C']
ผลลัพธ์ที่เราได้รับคือทูเปิลที่มีค่าทั้งหมดในนั้นถูกแปลงเป็นตัวพิมพ์ใหญ่
การใช้ map() กับพจนานุกรม
A พจนานุกรมใน Python สร้างขึ้นโดยใช้วงเล็บปีกกา ({}) เนื่องจากพจนานุกรมเป็นตัววนซ้ำ คุณจึงสามารถใช้มันภายในฟังก์ชัน map() ได้ ตอนนี้เรามาลองใช้พจนานุกรมเป็นตัววนซ้ำภายในฟังก์ชัน map() กัน
ตัวอย่างต่อไปนี้แสดงวิธีการทำงานของตัววนซ้ำพจนานุกรมภายในฟังก์ชัน map():
def myMapFunc(n): return n*10 my_dict = {2,3,4,5,6,7,8,9} finalitems = map(myMapFunc, my_dict) print(finalitems) print(list(finalitems))
Output:
<map object at 0x0000007EB451DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]
การใช้ map() กับ Set
ชุดใน Python คือชุดข้อมูลที่ไม่มีลำดับซึ่งอยู่ในวงเล็บปีกกา ({}) เนื่องจาก set() ก็เป็นตัววนซ้ำเช่นกัน คุณจึงสามารถใช้มันภายในฟังก์ชัน map() ได้
ต่อไปนี้เป็นตัวอย่างการใช้งานเซ็ตเป็นตัววนซ้ำภายในเมธอด map():
def myMapFunc(n): return n*10 my_set = {2,3,4,5,6,7,8,9} finalitems = map(myMapFunc, my_set) print(finalitems) print(list(finalitems))
Output:
<map object at 0x000000AC8F05DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]
การใช้ map() กับฟังก์ชัน Lambda
In Pythonนิพจน์แลมบ์ดาถูกนำมาใช้เพื่อสร้างฟังก์ชันที่ไม่ระบุชื่อ คุณจะต้องใช้คีย์เวิร์ด lambda เช่นเดียวกับที่คุณใช้ def เพื่อกำหนดฟังก์ชันปกติ
ในตัวอย่างนี้ เราจะใช้ฟังก์ชันแลมบ์ดาภายในเมธอด map() ฟังก์ชันแลมบ์ดาจะคูณค่าแต่ละค่าในลิสต์ด้วย 10
ตัวอย่าง:
my_list = [2,3,4,5,6,7,8,9] updated_list = map(lambda x: x * 10, my_list) print(updated_list) print(list(updated_list))
Output:
<map object at 0x000000BD18B11898>
[20, 30, 40, 50, 60, 70, 80, 90]
การใช้ตัววนซ้ำหลายตัวภายในฟังก์ชัน map()
ตัวอย่างที่ 1: การส่งตัววนซ้ำรายการสองตัวไปยังฟังก์ชัน map()
คุณสามารถส่งตัววนซ้ำได้มากกว่าหนึ่งตัวพร้อมกัน เช่น รายการ ทูเปิล ฯลฯ ไปยังฟังก์ชัน map()
ตัวอย่างเช่น หากคุณต้องการบวกลิสต์สองรายการ คุณสามารถทำได้โดยใช้ฟังก์ชัน map() เราจะใช้ลิสต์สองรายการ คือ my_list1 และ my_list2
ในตัวอย่างด้านล่างนี้ รายการแรกใน my_list1 จะถูกบวกเข้ากับรายการแรกของ my_list2 ฟังก์ชัน myMapFunc() รับรายการจาก my_list1 และ my_list2 และส่งคืนผลรวมของทั้งสองรายการ
ต่อไปนี้เป็นตัวอย่างการทำงานของการบวกลิสต์สองรายการที่กำหนดให้โดยใช้ฟังก์ชัน map()
def myMapFunc(list1, list2): return list1+list2 my_list1 = [2,3,4,5,6,7,8,9] my_list2 = [4,8,12,16,20,24,28] updated_list = map(myMapFunc, my_list1,my_list2) print(updated_list) print(list(updated_list))
Output:
<map object at 0x0000004D5F751860>
[6, 11, 16, 21, 26, 31, 36]
ตัวอย่างที่ 2: การส่งทูเปิลหนึ่งตัวและตัววนซ้ำรายการไปยังฟังก์ชัน map()
เราจะใช้ลิสต์และทูเพิลอิเทอเรเตอร์ในฟังก์ชัน map() ฟังก์ชันที่ส่งให้กับ map() คือ myMapFunc() จะดึงรายการจากลิสต์และทูเพิล รายการเหล่านั้นจะถูกเชื่อมด้วยเครื่องหมายขีดล่าง (_) ตัวอย่างการทำงานแสดงอยู่ด้านล่าง:
def myMapFunc(list1, tuple1): return list1+"_"+tuple1 my_list = ['a','b', 'b', 'd', 'e'] my_tuple = ('PHP','Java','Python','C++','C') updated_list = map(myMapFunc, my_list,my_tuple) print(updated_list) print(list(updated_list))
Output:
<map object at 0x00000059F37BB4E0> ['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']

