เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ฟังก์ชัน map()

มาลองใช้ mapping กัน!

ยังจำวิธีทำงานของ zip() ได้ไหม? มันจะรวม Iterable ที่กำหนดเข้าด้วยกัน โดยจับคู่ elements ที่มี index เดียวกันเข้าเป็น tuple เดียวกัน และขนาดของผลลัพธ์จะถูกจำกัดตาม Iterable ที่สั้นที่สุด

โจทย์ของคุณคือสร้างฟังก์ชัน my_zip() ขึ้นมาเอง โดยใช้ *args แทน Iterable จำนวนไม่จำกัด เช่น list, string, tuple เป็นต้น ต่างจาก zip ตรงที่ my_zip() ควรคืนค่าเป็น list ของ tuple แทน

หมายเหตุ: ตามปกติควรตรวจสอบก่อนว่า args มีข้อมูลที่เป็น Iterable หรือไม่ แต่เพื่อความเรียบง่าย เราจะละขั้นตอนนี้ไว้ก่อน

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ดึงค่า lengths จาก args โดยใช้ map() แล้วหาความยาวที่น้อยที่สุด
  • ภายใน loop ให้สร้าง mapping โดยใช้ map() เพื่อดึง elements จาก args ที่มี index i เดียวกัน
  • แปลง mapping เป็น tuple แล้ว append เข้าไปใน tuple_list

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

def my_zip(*args):
    
    # Retrieve Iterable lengths and find the minimal length
    lengths = list(map(____, ____))
    min_length = ____

    tuple_list = []
    for i in range(0, min_length):
        # Map the elements in args with the same index i
        mapping = map(____, args)
        # Convert the mapping and append it to tuple_list
        tuple_list.append(____(____))

    return tuple_list

result = my_zip([1, 2, 3], ['a', 'b', 'c', 'd'], 'DataCamp')
print(result)
แก้ไขและรันโค้ด