Các mapchức năng có thể rất hữu ích ở đây. Sử dụng mapchúng ta có thể áp dụng bất kỳ chức năng nào cho từng phần tử của một lần lặp.
Python 3.x
>>> def my_mul(x,y):
... return x*y
...
>>> a = [1,2,3,4]
>>> b = [2,3,4,5]
>>>
>>> list(map(my_mul,a,b))
[2, 6, 12, 20]
>>>
Tất nhiên:
map(f, iterable)
tương đương với
[f(x) for x in iterable]
Vì vậy, chúng tôi có thể nhận được giải pháp của chúng tôi thông qua:
>>> [my_mul(x,y) for x, y in zip(a,b)]
[2, 6, 12, 20]
>>>
Trong Python 2.x map()có nghĩa là: áp dụng một hàm cho từng phần tử của một lần lặp và xây dựng một danh sách mới. Trong Python 3.x, mapxây dựng các trình vòng lặp thay vì danh sách.
Thay vì my_mulchúng ta có thể sử dụng multoán tử
Python 2.7
>>>from operator import mul # import mul operator
>>>a = [1,2,3,4]
>>>b = [2,3,4,5]
>>>map(mul,a,b)
[2, 6, 12, 20]
>>>
Python 3,5+
>>> from operator import mul
>>> a = [1,2,3,4]
>>> b = [2,3,4,5]
>>> [*map(mul,a,b)]
[2, 6, 12, 20]
>>>
Xin lưu ý rằng vì map()xây dựng một trình vòng lặp, chúng tôi sử dụng *toán tử giải nén lặp để có được danh sách. Cách tiếp cận giải nén nhanh hơn một chút so với hàm listtạo:
>>> list(map(mul,a,b))
[2, 6, 12, 20]
>>>