Một trong những bộ ba function cực chất mà hầu như ngôn ngữ nào cũng phải có giúp cho việc xử lý mảng trở lên nhanh gọn hơn rất nhiều. đó chính là bộ 3 map
, filter
. Mà những thứ cực hay như thế thì chắc chắn một ngôn ngữ như python phải có rồi! :D
1, map().
Hàm map
này có tác dụng duyệt qua tất cả các phần tử của một hoặc nhiều list, dictionary hoặc tương tự như thế, sử dụng đơn giản với cú pháp như sau:
map(function, iterable1, iterable2 ,...)
Trong đó:
function
là hàm xử lý logic qua mỗi lần lặp giá trị tronginterable1
, ......interable1
,interable2
là các list, dict ,... các bạn cần lặp.
Hàm map
sẽ trả về một map object chứa các kết quả sau khi thực thi.
VD: nhân đôi giá trị của tất cả các phần tử trong list.
def mutiply(x):
return x * x
result = map(mutiply, [1, 2, 3, 4])
print(list(result)) # [1, 4, 9, 16]
Và function
kia bạn có thể khai báo dưới dạng lambla
cho gọn như sau:
result = map(lambda x: x * x, [1, 2, 3, 4])
print(list(result)) # [1, 4, 9, 16]
VD: map
đối với 2 list truyền vào.
result = map(lambda x, y: x + " " + y, ['red', 'blue'], ['green', 'black'])
print(list(result)) # ['red green', 'blue black']
2, filter().
Hàm này cũng có tác dụng duyệt qua các phần tử trong list, dict,... nhưng khác với map là hàm này sẽ chỉ trả về những giá trị mà điều kiện trong function chấp nhận (có nghĩa là True).
Cú pháp:
filter(function, iterable)
Trong đó:
function
là hàm xử lý logic qua mỗi lần lặp giá trị tronginterable
, ......interable
là các list, dict ,... các bạn cần lặp.
Hàm filter
sẽ trả về một map object chứa các kết quả sau khi thực thi.
VD: filter
các giá trị không chia hết cho 2.
result = filter(lambda x: x % 2, [1, 2, 3, 4, 5, 6, 7, 8, 9, 22])
print(list(result)) # [1, 3, 5, 7, 9]
3, Lời kết.
Bằng việc sử dụng lambda trong map
và filter
thì sẽ giúp cho code của chúng ta tường minh hơn, đồng thời sẽ tiết kiệm được một số tài nguyên khi chương trình runtime (không đáng kể).
Đăng ký nhận tin.
Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!
Bộ ba? Tác giả quên viết Reduce rồi.
Samori
6 năm trước
Chào bạn,
Do mình nhầm đó.
Reduce không còn được hỗ trợ trong python3 nữa rồi bạn ạ!
Vũ Thanh Tài
6 năm trước
Mình có thắc mắc là chỉ cần sử dụng list comprehention là có thể bao quát được cả map và filter rồi .Vậy độ phổ biến của cách này thế nào ạ ?
Vĩ
5 năm trước
Chào bạn. Trong phần mềm kết cấu etabs dc viết bởi vba . Vậy có cách nào viết addin bằng python ko vậy?. Xin cảm ơn
Lam
5 năm trước
Cam on ban.
Phương Vy
4 năm trước
uyen
4 năm trước
Thành
4 năm trước
Nguyễn Khánh Toàn
4 năm trước
quý đẹp trau
4 năm trước
loanntt
3 năm trước
mem mới
2 năm trước
idk123
2 năm trước
h
2 năm trước
Thành Vinh
2 năm trước
Út Nguyễn
5 tháng trước