Các map
chức năng có thể rất hữu ích ở đây. Sử dụng map
chú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, map
xây dựng các trình vòng lặp thay vì danh sách.
Thay vì my_mul
chúng ta có thể sử dụng mul
toá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 list
tạo:
>>> list(map(mul,a,b))
[2, 6, 12, 20]
>>>