Tôi có thể sử dụng bản đồ trên danh sách trong python không?

Ánh xạ trong lập trình bao gồm việc áp dụng hàm chuyển đổi cho một lần lặp để tạo một lần lặp mới. Sau đó, các phần tử trong iterable mới được xây dựng bằng cách gọi hàm chuyển đổi trên một phần tử trong iterable ban đầu

Ánh xạ là một phần của lập trình hàm trong đó các phép tính được thực hiện bằng cách kết hợp các hàm lấy đối số và kết quả là trả về một (hoặc nhiều giá trị) cụ thể. Trong ví dụ này, chúng ta sẽ thấy hàm map() trong Python và cách ánh xạ một danh sách các phần tử

Danh sách bản đồ Python

Để ánh xạ các phần tử danh sách trong Python, hãy sử dụng hàm map(). Hàm map() áp dụng một hàm cho từng thành phần danh sách, trả về một đối tượng bản đồ có thể lặp lại và gọi phương thức next() để duyệt qua danh sách

Bản đồ Python () là một phương thức tích hợp để áp dụng một hàm cho tất cả các thành phần của các đối tượng bản đồ có thể lặp lại và trả về chi tiết. Iterable bao gồm list, tuple, set và dictionary

Giá trị trả về từ hàm map() là một đối tượng bản đồ và nếu chúng ta muốn tạo một danh sách từ nó, thì hãy sử dụng hàm list();

data = [19, 21, 46, 29, 11]


def square_of_numbers(num):
    return num * num


mappedList = map(square_of_numbers, data)

print(next(mappedList))
print(next(mappedList))
print(next(mappedList))

đầu ra

361
441
2116

Chúng ta có thể thấy rằng chúng ta đã định nghĩa một hàm gọi là square_of_numbers(), hàm này trả về bình phương của các số. Chúng ta chuyển hàm này cho hàm map(), hàm này trả về đối tượng bản đồ

Để truy cập từng phần tử của đối tượng bản đồ, hãy sử dụng phương thức next(). Ví dụ: chúng ta có thể tạo danh sách đối tượng bản đồ bằng phương thức list()

data = [19, 21, 46, 29, 11]


def square_of_numbers(num):
    return num * num


mappedList = map(square_of_numbers, data)

print(list(mappedList))

đầu ra

[361, 441, 2116, 841, 121]

Danh sách bản đồ Python với hàm lambda

Để sử dụng hàm map() và lambda với danh sách Python, hãy chuyển hàm lambda trong hàm map() và nó sẽ trả về đối tượng bản đồ. Hàm ẩn danh hoặc hàm lambda trong Python là hàm được định nghĩa không có tên

data = [19, 21, 46, 29, 11]

mappedList = map(lambda num: num * num, data)

print(list(mappedList))

đầu ra

[361, 441, 2116, 841, 121]

Chúng ta không cần định nghĩa hàm trong ví dụ này vì lambda sẽ thực hiện công việc

Liệt kê danh sách các chuỗi

Chúng ta có thể liệt kê danh sách các chuỗi bằng phương thức list() và map()

data = ['grogu', 'dinjarin', 'ahsokatano']

mappedList = list(map(list, data))

print(list(mappedList))

đầu ra

[['g', 'r', 'o', 'g', 'u'], ['d', 'i', 'n', 'd', ' ', 'j', 'a', 'r', 'i', 'n'], 
['a', 'h', 's', 'o', 'k', 'a', ' ', 't', 'a', 'n', 'o']]

Phần kết luận

Hàm map() trong Python trả về đối tượng bản đồ mà bạn có thể chuyển đổi đối tượng đó thành danh sách, bộ dữ liệu, từ điển hoặc bộ. Ví dụ: bạn có thể sử dụng hàm lambda hoặc hàm thông thường trong hàm map()

Hàm map() áp dụng một hàm đã cho cho từng phần tử của một lần lặp (danh sách, bộ, v.v. ) và trả về một iterator chứa kết quả

Ví dụ

________số 8_______


map() Cú pháp

Cú pháp của nó là

map(function, iterable, ...)

bản đồ () Đối số

Hàm map() nhận hai đối số

Bạn có thể chuyển nhiều hơn một lần lặp cho hàm map()


map() Giá trị trả về

Hàm map() trả về một đối tượng của lớp bản đồ. Giá trị trả về có thể được chuyển đến các chức năng như

  • list() - để chuyển đổi thành danh sách
  • set() - để chuyển đổi thành một tập hợp, v.v.

ví dụ 1. Hoạt động của bản đồ ()

def calculateSquare(n):
    return n*n


numbers = (1, 2, 3, 4)

result = map(calculateSquare, numbers)

print(result) # converting map object to set numbersSquare = set(result) print(numbersSquare)

đầu ra

{16, 1, 4, 9}

Trong ví dụ trên, mỗi mục của bộ dữ liệu được bình phương


map() mong đợi một chức năng được truyền vào, nên các hàm lambda thường được sử dụng khi làm việc với các hàm map()

Hàm lambda là một hàm ngắn không có tên. Truy cập trang này để tìm hiểu thêm về Hàm lambda Python

Bạn có thể ánh xạ danh sách Python không?

Câu trả lời là, bạn có thể . Nhưng sử dụng Hàm ánh xạ Python giúp bạn tiết kiệm bộ nhớ (có nghĩa là mã của bạn chạy nhanh hơn) và yêu cầu ít mã hơn. Hãy xem qua một ví dụ để bạn có thể hiểu ý tôi.

Bản đồ có luôn trả về một danh sách không?

map() luôn trả về một danh sách . Xem họ modify() để biết các phiên bản trả về một đối tượng cùng loại với đầu vào.

Bản đồ có nhanh hơn khả năng hiểu danh sách trong Python không?

Hàm bản đồ nhanh hơn khả năng hiểu danh sách khi công thức đã được xác định là một hàm trước đó . Vì vậy, chức năng bản đồ đó được sử dụng mà không có biểu thức lambda.

Bản đồ có nhanh hơn vòng lặp for Python không?

map() hoạt động nhanh hơn nhiều so với vòng lặp for . Xem xét mã tương tự ở trên khi chạy trong ý tưởng này. Sử dụng bản đồ().