Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah `filter`, `map`, dan `reduce` Berubah daripada Python 2 kepada Python 3?

Bagaimanakah `filter`, `map`, dan `reduce` Berubah daripada Python 2 kepada Python 3?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-01 20:42:11958semak imbas

How Did `filter`, `map`, and `reduce` Change from Python 2 to Python 3?

Evolusi penapis, peta dan pengurangan dalam Python 3

Dalam peralihan daripada Python 2 kepada 3, tingkah laku penapis, peta dan pengurangan mengalami perubahan yang ketara .

Pandangan dan Iterator Sebaliknya Senarai

Untuk menggalakkan kecekapan, peta dan penapis kini kembalikan iterator dan bukannya senarai. Sebagai contoh, dalam Python 2, filter(f, range(2, 25)) mengembalikan senarai nilai yang ditapis, manakala dalam Python 3, ia mengembalikan iterator. Penyelesaian mudah ialah menukar lelaran kepada senarai secara eksplisit menggunakan list(map(...)), tetapi penyelesaian yang lebih elegan selalunya melibatkan pemahaman senarai atau penstrukturan semula kod untuk menghapuskan keperluan untuk senarai.

Alih keluar mengurangkan

Python 3 mengalih keluar fungsi mengurangkan terbina dalam. Sebaliknya, ia mengesyorkan menggunakan functools.kurangkan jika perlu. Walau bagaimanapun, seperti yang dicatatkan oleh dokumentasi, gelung untuk eksplisit secara amnya lebih mudah dibaca dan sesuai untuk 99% kes.

Kesimpulan

Perubahan ini bertujuan untuk meningkatkan kecekapan dan reka bentuk fungsi terbina dalam Python 3. Dengan mengikuti panduan yang disediakan dalam dokumentasi, pembangun boleh menggunakan iterator dan pendekatan alternatif dengan berkesan untuk mencapai kefungsian yang serupa dengan kod Python 2 mereka dalam Python 3.

Atas ialah kandungan terperinci Bagaimanakah `filter`, `map`, dan `reduce` Berubah daripada Python 2 kepada Python 3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn