Một giải pháp sử dụng giảm :
from functools import reduce
f = lambda x: f"f({x})"
g = lambda x: f"g({x})"
data = [1, 2, 3]
reduce(lambda acc, x: acc + [f(x), g(x)], data, [])
Mặc dù không phải là một cách hiểu danh sách, nhưng đây là một cách tiếp cận vấn đề theo chức năng. Hiểu danh sách về cơ bản là một cách khác để nhập map
dữ liệu, nhưng trong trường hợp này, khi ánh xạ không phải là 1-1 giữa đầu vào và đầu ra, reduce
cho phép một số chỗ trống với cách tạo đầu ra.
Nói chung, bất kỳ for
triển khai nào của biểu mẫu:
result = []
for n in some_data:
result += some_operation()
(Tức là đối với các vòng lặp nhằm tạo ra hiệu ứng phụ trên danh sách hoặc cấu trúc dữ liệu tương tự)
Có thể được cấu trúc lại thành một map/reduce/filter
triển khai khai báo .