Pemetaan dalam pemrograman terdiri dari penerapan fungsi transformasi ke iterable untuk membuat iterable baru. Kemudian, elemen di iterable baru dibangun dengan memanggil fungsi transformasi pada elemen di iterable asli Show
Pemetaan adalah bagian dari pemrograman fungsional di mana perhitungan dilakukan dengan menggabungkan fungsi yang mengambil argumen dan mengembalikan nilai (atau nilai) konkret sebagai hasilnya. Dalam contoh ini, kita akan melihat fungsi map() dengan Python dan cara memetakan daftar elemen Daftar peta pythonUntuk memetakan elemen daftar dengan Python, gunakan fungsi map(). Fungsi map() menerapkan fungsi ke setiap elemen daftar, menampilkan objek peta yang dapat diulang, dan memanggil metode next() untuk melintasi daftar Python map() adalah metode bawaan untuk menerapkan fungsi ke semua elemen detail iterable dan mengembalikan objek peta. Iterable mencakup daftar, tupel, set, dan kamus Nilai yang dikembalikan dari fungsi map() adalah objek peta dan jika kita ingin membuat daftar darinya, maka gunakan fungsi list(); data = [19, 21, 46, 29, 11] def square_of_numbers(num): return num * num mappedList = map(square_of_numbers, data) print(next(mappedList)) print(next(mappedList)) print(next(mappedList)) Keluaran361 441 2116_ Kita dapat melihat bahwa kita mendefinisikan fungsi yang disebut square_of_numbers(), yang mengembalikan kuadrat angka. Kami meneruskan fungsi ini ke fungsi map() , yang mengembalikan objek peta Untuk mengakses setiap elemen objek peta, gunakan metode next(). Misalnya, kita dapat membuat daftar objek peta menggunakan metode list() data = [19, 21, 46, 29, 11] def square_of_numbers(num): return num * num mappedList = map(square_of_numbers, data) print(list(mappedList)) Keluaran[361, 441, 2116, 841, 121] Daftar peta python dengan fungsi lambdaUntuk menggunakan fungsi map() dan lambda dengan daftar Python, berikan fungsi lambda di fungsi map() , dan itu akan mengembalikan objek peta. Fungsi anonim atau lambda Python adalah fungsi yang didefinisikan tanpa nama data = [19, 21, 46, 29, 11] mappedList = map(lambda num: num * num, data) print(list(mappedList))_ Keluaran[361, 441, 2116, 841, 121] Kami tidak perlu mendefinisikan fungsi dalam contoh ini karena lambda akan melakukan tugasnya Listify daftar stringKita dapat membuat daftar daftar string menggunakan metode list() dan map() data = ['grogu', 'dinjarin', 'ahsokatano'] mappedList = list(map(list, data)) print(list(mappedList))_ Keluaran[['g', 'r', 'o', 'g', 'u'], ['d', 'i', 'n', 'd', ' ', 'j', 'a', 'r', 'i', 'n'], ['a', 'h', 's', 'o', 'k', 'a', ' ', 't', 'a', 'n', 'o']] KesimpulanFungsi map() dalam Python mengembalikan objek peta tempat Anda dapat mengonversi objek itu menjadi daftar, tupel, kamus, atau set. Misalnya, Anda dapat menggunakan lambda atau fungsi reguler di fungsi map() Python adalah fungsi bawaan yang memungkinkan Anda untuk memproses dan mengubah semua item dalam iterable tanpa menggunakan loop 6 eksplisit, teknik yang umumnya dikenal sebagai pemetaan. 5 berguna saat Anda perlu menerapkan fungsi transformasi ke setiap item dalam iterable dan mengubahnya menjadi iterable baru. 5 adalah salah satu alat yang mendukung gaya pemrograman fungsional di PythonDalam tutorial ini, Anda akan belajar
Dengan pengetahuan ini, Anda akan dapat menggunakan 5 secara efektif dalam program Anda atau, alternatifnya, menggunakan pemahaman daftar atau membuat kode Anda lebih Pythonic dan mudah dibacaUntuk pemahaman yang lebih baik tentang 5, beberapa pengetahuan sebelumnya tentang cara bekerja dengan , 6 loop, fungsi, dan 6 fungsi akan sangat membantuBonus Gratis. 5 Pemikiran Tentang Python Mastery, kursus gratis untuk pengembang Python yang menunjukkan kepada Anda peta jalan dan pola pikir yang Anda perlukan untuk meningkatkan keterampilan Python Anda ke tingkat berikutnya Pengkodean Dengan Gaya Fungsional di PythonDalam pemrograman fungsional, komputasi dilakukan dengan menggabungkan fungsi yang mengambil argumen dan mengembalikan nilai (atau nilai) konkret sebagai hasilnya. Fungsi-fungsi ini tidak mengubah argumen inputnya dan tidak mengubah status program. Mereka hanya memberikan hasil perhitungan yang diberikan. Fungsi semacam ini umumnya dikenal sebagai fungsi murni Secara teori, program yang dibangun menggunakan gaya fungsional akan lebih mudah
Pemrograman fungsional biasanya menggunakan daftar, larik, dan iterable lainnya untuk merepresentasikan data bersama dengan serangkaian fungsi yang beroperasi pada data tersebut dan mengubahnya. Dalam mengolah data dengan gaya fungsional, setidaknya ada tiga teknik yang umum digunakan
Menurut Guido van Rossum, Python lebih kuat dipengaruhi oleh bahasa pemrograman imperatif daripada bahasa fungsional
Namun, pada tahun 1993, komunitas Python menuntut beberapa fitur pemrograman fungsional. Mereka meminta
Fitur fungsional ini ditambahkan ke bahasa berkat kontribusi anggota komunitas. Saat ini, , , dan _9 adalah komponen fundamental dari gaya pemrograman fungsional di PythonDalam tutorial ini, Anda akan membahas salah satu fitur fungsional ini, fungsi bawaan 5. Anda juga akan mempelajari cara menggunakan pemahaman daftar dan mendapatkan fungsionalitas yang sama dari 5 dengan cara Pythonic dan mudah dibacaHilangkan iklanMemulai Dengan >>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] 5 PythonTerkadang Anda mungkin menghadapi situasi di mana Anda perlu melakukan operasi yang sama pada semua item input iterable untuk membuat iterable baru. Pendekatan tercepat dan paling umum untuk masalah ini adalah dengan menggunakan loop Python 6. Namun, Anda juga dapat mengatasi masalah ini tanpa loop eksplisit dengan menggunakan 5Dalam tiga bagian berikut, Anda akan mempelajari cara kerja 5 dan cara menggunakannya untuk memproses dan mengubah iterables tanpa loopMemahami >>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] _5 5 mengulang item dari input iterable (atau iterables) dan mengembalikan iterator yang dihasilkan dari penerapan fungsi transformasi ke setiap item dalam iterable input asliMenurut , _5 mengambil objek fungsi dan iterable (atau beberapa iterables) sebagai argumen dan mengembalikan iterator yang menghasilkan item yang diubah sesuai permintaan. Tanda tangan fungsi didefinisikan sebagai berikut
5 berlaku 3 untuk setiap item di 4 dalam satu lingkaran dan mengembalikan iterator baru yang menghasilkan item yang diubah sesuai permintaan. 3 dapat berupa fungsi Python apa pun yang membutuhkan sejumlah argumen yang sama dengan jumlah iterables yang Anda berikan ke 5Catatan. Argumen pertama untuk _5 adalah objek fungsi, yang berarti Anda harus meneruskan fungsi tanpa memanggilnya. Artinya, tanpa menggunakan tanda kurungArgumen pertama untuk _5 ini adalah fungsi transformasi. Dengan kata lain, itu adalah fungsi yang mengubah setiap item asli menjadi item baru (yang diubah). Meskipun dokumentasi Python menyebut argumen ini 3, itu bisa berupa apa saja yang bisa dipanggil Python. Ini termasuk , kelas, metode, 6 fungsi, dan fungsi yang ditentukan penggunaOperasi yang dilakukan _5 umumnya dikenal sebagai pemetaan karena memetakan setiap item dalam masukan yang dapat diulang ke item baru dalam hasil yang dapat diulang. Untuk melakukan itu, _5 menerapkan fungsi transformasi ke semua item di input iterableUntuk lebih memahami 5, misalkan Anda perlu mengambil daftar nilai numerik dan mengubahnya menjadi daftar yang berisi nilai kuadrat dari setiap angka dalam daftar asli. Dalam hal ini, Anda dapat menggunakan loop 6 dan membuat kode seperti ini>>> _Saat Anda menjalankan loop ini pada _5, Anda mendapatkan daftar nilai kuadrat. Loop 6 berulang pada 5 dan menerapkan operasi daya pada setiap nilai. Terakhir, ini menyimpan nilai yang dihasilkan di 8Anda dapat mencapai hasil yang sama tanpa menggunakan loop eksplisit dengan menggunakan 5. Lihatlah implementasi ulang berikut dari contoh di atas>>> _ 0 adalah fungsi transformasi yang memetakan angka ke nilai kuadratnya. Panggilan ke _5 berlaku 0 ke semua nilai di 5 dan mengembalikan iterator yang menghasilkan nilai kuadrat. Kemudian Anda memanggil 4 pada 5 untuk membuat objek daftar yang berisi nilai kuadratKarena _5 ditulis dalam C dan sangat dioptimalkan, loop tersirat internalnya bisa lebih efisien daripada loop 6 Python biasa. Ini adalah salah satu keuntungan menggunakan 5Keuntungan kedua menggunakan _5 terkait dengan konsumsi memori. Dengan _6 loop, Anda perlu menyimpan seluruh daftar di memori sistem Anda. Dengan _5, Anda mendapatkan item sesuai permintaan, dan hanya satu item yang ada di memori sistem Anda pada waktu tertentuCatatan. Dalam Python2. x, mengembalikan daftar. Perilaku ini berubah di. Sekarang, _5 mengembalikan objek peta, yang merupakan iterator yang menghasilkan item sesuai permintaan. Itu sebabnya Anda perlu memanggil 4 untuk membuat objek daftar yang diinginkanSebagai contoh lain, katakanlah Anda perlu mengonversi semua item dalam daftar dari string ke bilangan bulat. Untuk melakukannya, Anda dapat menggunakan _5 bersama dengan 6 sebagai berikut>>> _ 5 berlaku untuk setiap nilai di 9. Karena 5 mengembalikan iterator (objek peta), Anda harus memanggil 4 agar Anda dapat menghabiskan iterator dan mengubahnya menjadi objek daftar. Perhatikan bahwa urutan asli tidak diubah dalam prosesHilangkan iklanMenggunakan >>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] _5 Dengan Berbagai Macam FungsiAnda dapat menggunakan segala jenis panggilan Python dengan 5. Satu-satunya syarat adalah callable mengambil argumen dan mengembalikan nilai yang konkret dan berguna. Misalnya, Anda dapat menggunakan kelas, instance yang mengimplementasikan metode khusus yang disebut , metode instance, metode kelas, metode statis, dan fungsiAda beberapa fungsi bawaan yang dapat Anda gunakan dengan 5. Perhatikan contoh-contoh berikut>>> _Anda dapat menggunakan fungsi bawaan apa pun dengan 5, asalkan fungsi mengambil argumen dan mengembalikan nilaiPola umum yang akan Anda lihat saat menggunakan 5 adalah menggunakan fungsi 6 sebagai argumen pertama. 6 fungsi berguna saat Anda harus meneruskan fungsi berbasis ekspresi ke 5. Misalnya, Anda dapat menerapkan kembali contoh nilai kuadrat menggunakan fungsi 6 sebagai berikut>>> _ 6 fungsi cukup berguna ketika menggunakan 5. Mereka dapat memainkan peran argumen pertama untuk 5. Anda dapat menggunakan 6 fungsi bersama dengan 5 untuk memproses dan mengubah iterables Anda dengan cepatMemproses Beberapa Iterable Input Dengan >>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] 5Jika Anda menyediakan beberapa iterables ke 5, maka fungsi transformasi harus mengambil argumen sebanyak iterables yang Anda berikan. Setiap iterasi _5 akan meneruskan satu nilai dari setiap iterable sebagai argumen ke 3. Iterasi berhenti di akhir iterable terpendekPerhatikan contoh berikut yang menggunakan >>> _ _21 menerima dua argumen, 23 dan 24, dan mengembalikan 23 pangkat 24. Pada iterasi pertama, _23 akan menjadi 28, 24 akan menjadi 30, dan hasilnya adalah 28. Pada iterasi kedua, _23 akan menjadi 33, 24 akan menjadi 35, dan hasilnya akan menjadi 36, dan seterusnya. Iterable terakhir hanya sepanjang iterable terpendek, yaitu 37 dalam hal iniTeknik ini memungkinkan Anda menggabungkan dua atau lebih iterables dari nilai numerik menggunakan berbagai jenis operasi matematika. Berikut adalah beberapa contoh yang menggunakan fungsi _6 untuk melakukan operasi matematika yang berbeda pada beberapa input iterables>>> _Pada contoh pertama, Anda menggunakan operasi pengurangan untuk menggabungkan dua iterable yang masing-masing terdiri dari tiga item. Dalam contoh kedua, Anda menjumlahkan nilai dari tiga iterables Mengubah Iterables dari String Dengan Python >>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] 5Saat Anda bekerja dengan iterables dari objek string, Anda mungkin tertarik untuk mengubah semua objek menggunakan semacam fungsi transformasi. 5 Python dapat menjadi sekutu Anda dalam situasi ini. Bagian berikut akan memandu Anda melalui beberapa contoh cara menggunakan 5 untuk mengubah iterable objek stringMenggunakan Metode >>> numbers = [1, 2, 3, 4, 5] >>> squared = [] >>> for num in numbers: .. squared.append(num ** 2) ... >>> squared [1, 4, 9, 16, 25] _42Pendekatan yang cukup umum adalah menggunakan beberapa untuk mengubah string yang diberikan menjadi string baru. Jika Anda berurusan dengan iterables string dan perlu menerapkan transformasi yang sama untuk setiap string, maka Anda dapat menggunakan 5 bersama dengan berbagai metode string>>> _Ada beberapa transformasi yang dapat Anda lakukan pada setiap item di 45 menggunakan 5 dan metode string. Sebagian besar waktu, Anda akan menggunakan metode yang tidak memerlukan argumen tambahan, seperti , , , , danAnda juga dapat menggunakan beberapa metode yang menggunakan argumen tambahan dengan nilai default, seperti , yang menggunakan argumen opsional yang disebut 53 yang default untuk menghapus spasi>>> _Saat Anda menggunakan 52 seperti ini, Anda mengandalkan nilai default 53. Dalam hal ini, Anda menggunakan _5 untuk menghapus semua spasi kosong di item 57Catatan. Jika Anda perlu memberikan argumen daripada mengandalkan nilai default, maka Anda dapat menggunakan fungsi 6Berikut adalah contoh yang menggunakan _52 untuk menghapus titik daripada spasi default>>> 0Fungsi _6 memanggil 61 pada objek string 62 dan menghapus semua titik awal dan akhirTeknik ini dapat berguna ketika, misalnya, Anda sedang memproses file teks di mana baris dapat memiliki spasi tambahan (atau karakter lain) dan Anda perlu menghapusnya. Jika demikian, maka Anda perlu mempertimbangkan bahwa menggunakan 52 tanpa 53 khusus akan menghapus karakter baris baru jugaHilangkan iklanMenghapus Tanda BacaSaat memproses teks, terkadang Anda perlu menghapus tanda baca yang tersisa setelah Anda membagi teks menjadi kata-kata. Untuk mengatasi masalah ini, Anda dapat membuat fungsi kustom yang menghapus tanda baca dari satu kata menggunakan ekspresi reguler yang cocok dengan tanda baca paling umum Inilah kemungkinan penerapan fungsi ini menggunakan , yang merupakan fungsi ekspresi reguler yang ada di modul di pustaka standar Python >>> 1Di dalam _67, Anda menggunakan pola ekspresi reguler yang cocok dengan tanda baca paling umum yang akan Anda temukan di teks apa pun yang ditulis dalam bahasa Inggris. Panggilan ke 68 menggantikan tanda baca yang cocok menggunakan string kosong ( 69) dan mengembalikan 70 yang dibersihkanDengan fungsi transformasi Anda, Anda dapat menggunakan 5 untuk menjalankan transformasi pada setiap kata dalam teks Anda. Begini cara kerjanya>>> 2Dalam teks ini, beberapa kata menyertakan tanda baca. Misalnya, Anda memiliki 72 bukannya 73, 74 bukannya 75, dan seterusnya. Panggilan ke 5 berlaku 67 untuk setiap kata dan menghapus tanda baca apa pun. Jadi, di _78 kedua, Anda telah membersihkan kata-kataPerhatikan bahwa apostrof ( _79) tidak ada dalam ekspresi reguler Anda karena Anda ingin mempertahankan kontraksi seperti 80 sebagaimana adanyaMenerapkan Algoritma Caesar CipherJulius Caesar, negarawan Romawi, biasa melindungi pesan yang dia kirim ke jenderalnya dengan mengenkripsinya menggunakan sandi. Cipher Caesar menggeser setiap huruf dengan sejumlah huruf. Misalnya, jika Anda menggeser huruf _81 menjadi tiga, maka Anda mendapatkan huruf 82, dan seterusnyaJika pergeseran melampaui akhir alfabet, maka Anda hanya perlu memutar kembali ke awal alfabet. Dalam kasus rotasi sebanyak tiga, 23 akan menjadi 81. Beginilah tampilan alfabet setelah rotasi
Kode berikut mengimplementasikan _87, sebuah fungsi yang mengambil karakter dan memutarnya sebanyak tiga. _87 akan mengembalikan karakter yang diputar. Ini kodenya _3Di dalam _87, pertama-tama Anda memeriksa apakah karakter tersebut ada dalam alfabet. Jika tidak, maka Anda mengembalikan karakter yang sama. Ini bertujuan untuk menjaga tanda baca dan karakter tidak biasa lainnya. Pada baris 8, Anda menghitung posisi karakter baru yang diputar dalam alfabet. Untuk melakukan ini, Anda menggunakan fungsi bawaan _90 mengambil karakter Unicode dan mengembalikan bilangan bulat yang mewakili titik kode Unicode dari karakter input. Misalnya, _92 mengembalikan 93, dan 94 mengembalikan 95>>> 4 _90 mengambil karakter sebagai argumen dan mengembalikan titik kode Unicode dari karakter inputJika Anda menambahkan bilangan bulat ini ke nomor target 97, maka Anda akan mendapatkan posisi huruf baru yang diputar dalam alfabet. Dalam contoh ini, _97 adalah 99. Jadi, huruf 00 yang diputar tiga akan menjadi huruf pada posisi 01, yaitu huruf 02. Huruf _03 diputar tiga akan menjadi huruf pada posisi 04, yaitu huruf 05, dan seterusnyaJika posisi baru huruf tidak melebihi posisi huruf terakhir ( 06), maka Anda mengembalikan huruf pada posisi baru ini. Untuk melakukan itu, Anda menggunakan fungsi bawaan _07 adalah kebalikan dari 90. Dibutuhkan bilangan bulat yang mewakili titik kode Unicode dari karakter Unicode dan mengembalikan karakter pada posisi itu. Misalnya, _10 akan mengembalikan 11, dan 12 akan mengembalikan 13>>> 5 _07 mengambil integer yang mewakili titik kode Unicode dari karakter dan mengembalikan karakter yang sesuaiTerakhir, jika posisi baru yang diputar berada di luar posisi huruf terakhir ( 06), maka Anda perlu memutar kembali ke awal alfabet. Untuk melakukan itu, Anda perlu mengurangi panjang alfabet dari posisi yang diputar ( 16) dan kemudian mengembalikan huruf pada posisi baru tersebut menggunakan 07Dengan _87 sebagai fungsi transformasi Anda, Anda dapat menggunakan 5 untuk mengenkripsi teks apapun menggunakan algoritma caesar cipher. Berikut adalah contoh yang menggunakan _20 untuk menggabungkan string>>> 6String juga dapat diubah dengan Python. Jadi, panggilan ke _5 berlaku 87 untuk setiap karakter dalam string input asli. Dalam hal ini, _23 menjadi 24, 25 menjadi 03, dan seterusnya. Terakhir, panggilan ke 20 menggabungkan setiap karakter yang diputar dalam pesan terenkripsi akhirHilangkan iklanMengubah Iterable Bilangan Dengan Python >>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] 5 5 juga memiliki potensi besar dalam hal pemrosesan dan transformasi iterables dari nilai numerik. Anda dapat melakukan berbagai macam operasi matematika dan aritmatika, mengonversi nilai string menjadi bilangan titik-mengambang atau bilangan bulat, dan seterusnyaDi bagian berikut, Anda akan membahas beberapa contoh cara menggunakan 5 untuk memproses dan mengubah iterable angkaMenggunakan Operasi MatematikaContoh umum menggunakan operasi matematika untuk mengubah iterable dari nilai numerik adalah dengan menggunakan the. Dalam contoh berikut, Anda mengkode fungsi transformasi yang mengambil angka dan mengembalikan angka kuadrat dan pangkat tiga >>> 7 _32 mengambil angka 23 dan mengembalikan kuadrat dan kubusnya. Sejak Python menangani , setiap panggilan ke 32 mengembalikan tuple dengan dua nilai. Saat Anda memanggil 5 dengan 32 sebagai argumen, Anda mendapatkan daftar tupel yang berisi kuadrat dan kubus dari setiap angka dalam input iterableAda banyak transformasi terkait matematika yang dapat Anda lakukan dengan 5. Anda dapat menambahkan konstanta dan menguranginya dari setiap nilai. Anda juga dapat menggunakan beberapa fungsi dari modul 38 seperti 39, , , , , dan seterusnya. Berikut adalah contoh menggunakan ________52______40>>> ________46______8 Dalam hal ini, Anda mengubah 5 menjadi daftar baru yang berisi faktorial dari setiap angka dalam daftar asliAnda dapat melakukan spektrum transformasi matematika yang luas pada iterable angka menggunakan 5. Seberapa jauh Anda masuk ke topik ini akan bergantung pada kebutuhan dan imajinasi Anda. Berikan beberapa pemikiran dan buat kode contoh Anda sendiriKonversi SuhuKasus penggunaan lain untuk _5 adalah mengonversi antar satuan ukuran. Misalkan Anda memiliki daftar suhu yang diukur dalam derajat Celcius atau Fahrenheit dan Anda perlu mengubahnya menjadi suhu yang sesuai dalam derajat Fahrenheit atau CelciusAnda dapat membuat kode dua fungsi transformasi untuk menyelesaikan tugas ini _9 _47 melakukan pengukuran suhu dalam Celcius dan mengubahnya menjadi Fahrenheit. Demikian pula, _48 mengukur suhu dalam Fahrenheit dan mengubahnya menjadi CelciusFungsi-fungsi ini akan menjadi fungsi transformasi Anda. Anda dapat menggunakannya dengan _5 untuk mengonversi iterable pengukuran suhu ke Fahrenheit dan Celcius masing-masing>>> 0Jika Anda memanggil 5 dengan 47 dan 52, maka Anda mendapatkan daftar ukuran suhu di Fahrenheit. Jika Anda memanggil 5 dengan 48 dan 55, Anda akan mendapatkan daftar ukuran suhu dalam CelciusUntuk memperluas contoh ini dan mencakup jenis konversi satuan lainnya, Anda hanya perlu mengkodekan fungsi transformasi yang sesuai Hilangkan iklanMengubah String Menjadi AngkaSaat bekerja dengan data numerik, Anda mungkin akan menghadapi situasi di mana semua data Anda adalah nilai string. Untuk melakukan perhitungan lebih lanjut, Anda harus mengonversi nilai string menjadi nilai numerik. 5 juga dapat membantu dalam situasi iniJika Anda yakin bahwa data Anda bersih dan tidak mengandung nilai yang salah, maka Anda dapat langsung menggunakan atau 6 sesuai dengan kebutuhan Anda. Berikut beberapa contohnya>>> 1Pada contoh pertama, Anda menggunakan _57 dengan 5 untuk mengubah semua nilai dari nilai string menjadi nilai. Dalam kasus kedua, Anda menggunakan 6 untuk mengonversi dari string ke an. Perhatikan bahwa jika salah satu nilai bukan angka yang valid, maka Anda akan mendapatkan aJika Anda tidak yakin data Anda bersih, Anda dapat menggunakan fungsi konversi yang lebih rumit seperti berikut ini >>> 2Di dalam _63, Anda menggunakan a yang menangkap 62 jika 57 gagal saat mengonversi 67. Jika tidak terjadi kesalahan, maka fungsi Anda mengembalikan 67 dikonversi ke angka floating-point yang valid. Jika tidak, Anda mendapatkan , yang merupakan nilai 70 khusus yang dapat Anda gunakan untuk mewakili nilai yang bukan angka yang valid, seperti 71 pada contoh di atasAnda dapat menyesuaikan _63 sesuai dengan kebutuhan Anda. Misalnya, Anda dapat mengganti pernyataan _73 dengan pernyataan ________52______74, dan seterusnyaMenggabungkan >>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] _5 Dengan Alat Fungsional LainnyaSejauh ini, Anda telah membahas cara menggunakan 5 untuk menyelesaikan berbagai tugas yang melibatkan iterables. Namun, jika Anda menggunakan _5 bersama dengan alat fungsional lainnya seperti dan 9, maka Anda dapat melakukan transformasi yang lebih kompleks pada iterables Anda. Itulah yang akan Anda bahas dalam dua bagian berikut>>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] 5 dan >>> numbers = [-2, -1, 0, 1, 2] >>> abs_values = list(map(abs, numbers)) >>> abs_values [2, 1, 0, 1, 2] >>> list(map(float, numbers)) [-2.0, -1.0, 0.0, 1.0, 2.0] >>> words = ["Welcome", "to", "Real", "Python"] >>> list(map(len, words)) [7, 2, 4, 6] 8Terkadang Anda perlu memproses input iterable dan mengembalikan iterable lain yang dihasilkan dari memfilter nilai yang tidak diinginkan di input iterable. Dalam hal ini, _8 Python dapat menjadi pilihan yang baik untuk Anda. _8 adalah fungsi bawaan yang menggunakan dua argumen posisi
_8 menghasilkan item input 4 yang 3 mengembalikan 85. Jika Anda meneruskan 92 ke 3, maka 8 menggunakan fungsi identitas. Ini berarti bahwa _8 akan memeriksa nilai kebenaran dari setiap item di 4 dan memfilter semua item yangUntuk mengilustrasikan bagaimana Anda dapat menggunakan 5 bersama dengan 8, katakanlah Anda perlu menghitung akar kuadrat dari semua nilai dalam daftar. Karena daftar Anda dapat berisi nilai negatif, Anda akan mendapatkan kesalahan karena akar kuadrat tidak ditentukan untuk angka negatif>>> 3Dengan bilangan negatif sebagai argumen, _99 memunculkan 62. Untuk menghindari masalah ini, Anda dapat menggunakan _8 untuk memfilter semua nilai negatif, lalu mencari akar kuadrat dari nilai positif yang tersisa. Lihat contoh berikut>>> 4 _02 adalah fungsi predikat yang mengambil angka sebagai argumen dan mengembalikan 85 jika angkanya lebih besar dari atau sama dengan nol. Anda dapat meneruskan 02 ke 8 untuk menghapus semua bilangan negatif dari 5. Jadi, panggilan ke _5 hanya akan memproses angka positif dan 99 tidak akan memberi Anda 62Hilangkan iklan>>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] 5 dan >>> numbers = [-2, -1, 0, 1, 2] >>> abs_values = list(map(abs, numbers)) >>> abs_values [2, 1, 0, 1, 2] >>> list(map(float, numbers)) [-2.0, -1.0, 0.0, 1.0, 2.0] >>> words = ["Welcome", "to", "Real", "Python"] >>> list(map(len, words)) [7, 2, 4, 6] 9 _9 Python adalah fungsi yang hidup dalam modul yang disebut 13 di pustaka standar Python. _9 adalah alat fungsional inti lain di Python yang berguna saat Anda perlu menerapkan fungsi ke iterable dan menguranginya menjadi nilai kumulatif tunggal. Operasi semacam ini umumnya dikenal sebagai pengurangan atau pelipatan. _9 mengambil dua argumen yang diperlukan
_9 akan menerapkan 3 ke semua item di 4 dan secara kumulatif menghitung nilai akhirBerikut adalah contoh yang menggabungkan _5 dan 9 untuk menghitung ukuran total semua file yang ada di direktori home Anda secara kumulatif>>> 5Dalam contoh ini, Anda menelepon untuk mendapatkan jalur ke direktori home Anda. Kemudian Anda memanggil jalur itu untuk mendapatkan daftar dengan jalur semua file yang ada di sana Panggilan ke _5 digunakan untuk mendapatkan ukuran setiap file. Akhirnya, Anda menggunakan _9 dengan untuk mendapatkan jumlah kumulatif dari ukuran setiap file. Hasil akhirnya adalah ukuran total semua file di direktori home Anda dalam satuan byteCatatan. Beberapa tahun lalu, Google mengembangkan dan mulai menggunakan model pemrograman yang mereka sebut MapReduce. Itu adalah gaya baru pemrosesan data yang dirancang untuk mengelola data besar menggunakan komputasi paralel dan terdistribusi pada sebuah cluster Model ini terinspirasi dari kombinasi operasi pemetaan dan pengurangan yang biasa digunakan dalam pemrograman fungsional Model MapReduce berdampak besar pada kemampuan Google untuk menangani data dalam jumlah besar dalam waktu yang wajar. Namun, pada tahun 2014 Google tidak lagi menggunakan MapReduce sebagai model pemrosesan utama mereka Saat ini, Anda dapat menemukan beberapa implementasi alternatif MapReduce seperti Apache Hadoop, yang merupakan kumpulan utilitas perangkat lunak open source yang menggunakan model MapReduce. Meskipun Anda dapat menggunakan _9 untuk menyelesaikan masalah yang dibahas di bagian ini, Python menawarkan alat lain yang dapat menghasilkan solusi Pythonic yang lebih efisien dan efisien. Misalnya, Anda dapat menggunakan fungsi bawaan 30 untuk menghitung ukuran total file di direktori home Anda>>> 6Contoh ini jauh lebih mudah dibaca dan efisien daripada contoh yang Anda lihat sebelumnya. Jika Anda ingin mempelajari lebih dalam tentang cara menggunakan 9 dan alat alternatif apa yang dapat Anda gunakan untuk mengganti 9 dengan cara Pythonic, lihat pengurangan() Python. Dari Fungsional ke Gaya PythonicMemproses Iterable Berbasis Tuple Dengan >>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] 33 34 Python membuat iterator yang menerapkan fungsi ke argumen yang diperoleh dari iterable tupel dan menghasilkan hasilnya. Ini berguna saat Anda memproses iterables yang sudah dikelompokkan dalam tupelPerbedaan utama antara 5 dan 33 adalah bahwa yang terakhir memanggil fungsi transformasinya menggunakan operator pembongkaran ( 37) untuk membongkar setiap tupel argumen menjadi beberapa argumen posisi. Jadi, fungsi transformasi disebut sebagai _38 alih-alih 39Dikatakan bahwa fungsinya kira-kira setara dengan fungsi Python berikut _7Putaran 6 dalam fungsi ini mengulang item dalam 4 dan menghasilkan item yang diubah sebagai hasilnya. Panggilan ke _38 menggunakan operator unpacking untuk membongkar tupel menjadi beberapa argumen posisi. Berikut adalah beberapa contoh bagaimana _33 bekerja>>> ________52______8 Dalam contoh pertama, Anda menggunakan untuk menghitung kekuatan dari nilai pertama yang dinaikkan ke nilai kedua di setiap tupel. Tuple akan berbentuk 46Jika setiap tuple di iterable Anda memiliki dua item, maka 3 juga harus mengambil dua argumen. Jika tupel memiliki tiga item, maka 3 harus mengambil tiga argumen, dan seterusnya. Jika tidak, Anda akan mendapatkan aJika Anda menggunakan 5 alih-alih 33, maka Anda akan mendapatkan hasil yang berbeda karena 5 mengambil satu item dari setiap tupel>>> ________52______9 Perhatikan bahwa _5 mengambil dua tupel, bukan daftar tupel. 5 juga mengambil satu nilai dari setiap tupel di setiap iterasi. Untuk membuat _5 mengembalikan hasil yang sama seperti 33, Anda harus menukar nilai>>> 0Dalam hal ini, Anda memiliki dua tupel, bukan daftar tupel. Anda juga menukar 57 dan 30. Sekarang tupel pertama memberikan basis dan tupel kedua memberikan eksponenHilangkan iklanPengkodean Dengan Gaya Pythonic. Mengganti >>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] >>> int_nums = map(int, str_nums) >>> int_nums <map object at 0x7fb2c7e34c70> >>> list(int_nums) [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] >>> str_nums ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"] _5Alat pemrograman fungsional seperti 5, 8, dan 9 telah ada sejak lama. Namun, buatlah daftar pemahaman dan telah menjadi pengganti alami bagi mereka hampir di setiap kasus penggunaanMisalnya, fungsionalitas yang disediakan oleh _5 hampir selalu diekspresikan dengan lebih baik menggunakan pemahaman daftar atau ekspresi generator. Dalam dua bagian berikut, Anda akan mempelajari cara mengganti panggilan ke 5 dengan pemahaman daftar atau ekspresi generator untuk membuat kode Anda lebih mudah dibaca dan PythonicMenggunakan Pemahaman DaftarAda pola umum yang dapat Anda gunakan untuk mengganti panggilan ke 5 dengan pemahaman daftar. Begini caranya _1Perhatikan bahwa pemahaman daftar hampir selalu terbaca lebih jelas daripada panggilan ke 5. Karena pemahaman daftar cukup populer di kalangan pengembang Python, umum ditemukan di mana-mana. Jadi, mengganti panggilan ke _5 dengan pemahaman daftar akan membuat kode Anda terlihat lebih akrab bagi pengembang Python lainnyaBerikut adalah contoh cara mengganti _5 dengan pemahaman daftar untuk membuat daftar bilangan kuadrat>>> 2Jika Anda membandingkan kedua solusi tersebut, maka Anda dapat mengatakan bahwa solusi yang menggunakan pemahaman daftar lebih mudah dibaca karena terbaca hampir seperti bahasa Inggris biasa. Selain itu, pemahaman daftar menghindari kebutuhan untuk secara eksplisit memanggil 4 pada 5 untuk membuat daftar finalMenggunakan Ekspresi Generator 5 mengembalikan objek peta, yang merupakan iterator yang menghasilkan item sesuai permintaan. Jadi, pengganti alami untuk _5 adalah karena ekspresi generator mengembalikan objek generator, yang juga merupakan iterator yang menghasilkan item sesuai permintaanIterator Python dikenal cukup efisien dalam hal konsumsi memori. Inilah alasan mengapa _5 sekarang mengembalikan iterator, bukan 78Ada sedikit perbedaan sintaksis antara pemahaman daftar dan ekspresi generator. Yang pertama menggunakan sepasang tanda kurung siku ( 75) untuk membatasi ekspresi. Yang kedua menggunakan sepasang tanda kurung ( 76). Jadi, untuk mengubah pemahaman daftar menjadi ekspresi generator, Anda hanya perlu mengganti tanda kurung siku dengan tanda kurungAnda dapat menggunakan ekspresi generator untuk menulis kode yang terbaca lebih jelas daripada kode yang menggunakan 5. Lihat contoh berikut>>> 3Kode ini memiliki perbedaan utama dari kode di bagian sebelumnya. Anda mengubah tanda kurung siku menjadi sepasang tanda kurung untuk mengubah pemahaman daftar menjadi ekspresi generator Ekspresi generator umumnya digunakan sebagai argumen dalam pemanggilan fungsi. Dalam hal ini, Anda tidak perlu menggunakan tanda kurung untuk membuat ekspresi generator karena tanda kurung yang Anda gunakan untuk memanggil fungsi juga menyediakan sintaks untuk membuat generator. Dengan ide ini, Anda bisa mendapatkan hasil yang sama seperti contoh di atas dengan memanggil 4 seperti ini>>> 4Jika Anda menggunakan ekspresi generator sebagai argumen dalam pemanggilan fungsi, maka Anda tidak memerlukan pasangan tanda kurung tambahan. Tanda kurung yang Anda gunakan untuk memanggil fungsi menyediakan sintaks untuk membuat generator Ekspresi generator seefisien _5 dalam hal konsumsi memori karena keduanya mengembalikan iterator yang menghasilkan item sesuai permintaan. Namun, ekspresi generator hampir selalu meningkatkan keterbacaan kode Anda. Mereka juga membuat kode Anda lebih Pythonic di mata pengembang Python lainnyaHilangkan iklanKesimpulanPython memungkinkan Anda untuk melakukan operasi pemetaan pada iterables. Operasi pemetaan terdiri dari penerapan fungsi transformasi ke item dalam iterable untuk menghasilkan iterable yang diubah. Secara umum, _5 akan memungkinkan Anda untuk memproses dan mengubah iterables tanpa menggunakan loop eksplisitDalam tutorial ini, Anda telah mempelajari cara kerja 5 dan cara menggunakannya untuk memproses iterables. Anda juga belajar tentang beberapa alat Pythonic yang dapat Anda gunakan untuk mengganti 5 dalam kode AndaAnda sekarang tahu caranya
Dengan pengetahuan baru ini, Anda akan dapat menggunakan 5 dalam kode Anda dan mendekati kode Anda dengan gaya pemrograman fungsional. Anda juga dapat beralih ke gaya yang lebih Pythonic dan modern dengan mengganti 5 dengan pemahaman daftar atauTandai sebagai Selesai Tonton Sekarang Tutorial ini memiliki kursus video terkait yang dibuat oleh tim Real Python. Tonton bersama dengan tutorial tertulis untuk memperdalam pemahaman Anda. Peta Python () Fungsi. Mengubah Iterables 🐍 Trik Python 💌 Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python Kirimi Saya Trik Python » Tentang Leodanis Pozo Ramos Leodanis adalah seorang insinyur industri yang menyukai Python dan pengembangan perangkat lunak. Dia adalah pengembang Python otodidak dengan pengalaman lebih dari 6 tahun. Dia adalah seorang penulis teknis yang rajin dengan semakin banyak artikel yang diterbitkan di Real Python dan situs lainnya » Lebih lanjut tentang LeodanisSetiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah Aldren Bryan Geir Arne Joanna Yakub Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista Tingkatkan Keterampilan Python Anda » Guru Keterampilan Python Dunia Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista Tingkatkan Keterampilan Python Anda » Bagaimana menurut anda? Nilai artikel ini Tweet Bagikan Bagikan EmailApa takeaway # 1 Anda atau hal favorit yang Anda pelajari? Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami Bisakah Anda memetakan daftar Python?Jawabannya adalah, kamu bisa . Tetapi menggunakan Fungsi Peta Python menghemat memori Anda (yang berarti kode Anda berjalan lebih cepat) dan membutuhkan lebih sedikit kode. Mari kita telusuri sebuah contoh sehingga Anda dapat memahami apa yang saya maksud.
Bagaimana Anda menggunakan peta daftar?Pemrograman C dari awal- Pemrograman Master C . Buat objek Peta Menggunakan metode put() masukkan elemen ke dalamnya sebagai kunci, pasangan nilai Buat ArrayList bertipe integer untuk menyimpan kunci peta. . Buat ArrayList bertipe String untuk menyimpan nilai peta. . Cetak isi kedua daftar Bagaimana Anda memetakan nilai ke daftar dengan Python?Python fungsi map()
. ) Parameter. seru. Ini adalah fungsi di mana peta melewati setiap elemen dari iterable yang diberikan. iter. Ini adalah iterable yang harus dipetakan.
Apakah peta selalu mengembalikan daftar?map() selalu mengembalikan daftar . Lihat keluarga modifikasi() untuk versi yang mengembalikan objek bertipe sama dengan input. |