map
và filter
thường hoán đổi cho nhau với danh sách, nhưng reduce
không dễ dàng được hoán đổi thành map
và filter
(và bên cạnh đó, trong một số trường hợp, tôi vẫn thích cú pháp chức năng). Tuy nhiên, khi bạn cần tự vận hành các lập luận, tôi thấy mình đang trải qua thể dục dụng cụ và cuối cùng phải viết toàn bộ các chức năng để duy trì khả năng đọc.Bạn có thể áp dụng một hoạt động trực tiếp cho các đối số trong bản đồ/giảm/lọc không?
Tôi sẽ sử dụng map
để duy trì thử nghiệm đơn vị minh họa đơn giản, nhưng xin lưu ý rằng các trường hợp sử dụng trong cuộc sống thực có thể khó diễn tả hơn dưới dạng hiểu danh sách.
Tôi đã tìm thấy hai cách lộn xộn để đi về nó, nhưng không có gì tôi thực sự sẽ sử dụng.
[afunc(*i) for i in aniter] == map(afunc, *zip(*aniter))
[afunc(*i) for i in aniter] == map(lambda i: apply(afunc, i), aniter)
Có cách nào khéo léo, thanh lịch để thể hiện mặt bên phải của các cụm từ này không?
Rất tốt, tôi luôn sử dụng công cụ lặp, nhưng vì một lý do nào đó, tôi không thấy có vấn đề gì xảy ra. – kojiro
+1 cho liên kết công thức nấu ăn tuyệt vời! Tôi chưa bao giờ để ý rằng – Kos