Jika Anda pindah ke Python dari C atau Java, Anda mungkin bingung dengan loop 1 2 3 4 5 2 Python. Python sebenarnya tidak memiliki for loop… setidaknya bukan jenis 1 2 3 4 5 2 loop yang sama yang dimiliki oleh bahasa berbasis C. Loop 1 2 3 4 5 2 Python sebenarnya adalah foreach loop
Pada artikel ini saya akan membandingkan 1 2 3 4 5 2 loop Python dengan yang ada di bahasa lain dan mendiskusikan cara biasa kita memecahkan masalah umum dengan 1 2 3 4 5 2 loop di Python
Untuk loop dalam bahasa lain
Sebelum kita melihat loop Python, mari kita lihat loop for di JavaScript
1 2 3 4 var colors = ["red", "green", "blue", "purple"]; for (var i = 0; i < colors.length; i++) { console.log(colors[i]); }
Loop JavaScript ini terlihat hampir identik di C/C++ dan Java
Dalam lingkaran ini kita
- Tetapkan variabel penghitung 1 2 3 4 5 _7 ke 0
- Periksa apakah penghitung kurang dari panjang array
- Jalankan kode dalam loop atau keluar dari loop jika penghitung terlalu tinggi
- Tingkatkan variabel penghitung sebesar 1
Mengulang dengan Python
Sekarang mari kita bicara tentang loop di Python. Pertama kita akan melihat dua metode perulangan yang sedikit lebih familiar dan kemudian kita akan melihat cara idiomatis untuk mengulang dengan Python
ketika
Jika kita ingin meniru perilaku loop 1 2 3 4 5 2 C-style tradisional kita dengan Python, kita bisa menggunakan loop 1 2 3 4 5 9
1 2 3 4 5 colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1
Ini melibatkan 4 langkah yang sama dengan 1 2 3 4 5 2 loop dalam bahasa lain (perhatikan bahwa kami menyetel, memeriksa, dan menambahkan 1 2 3 4 5 7) tetapi tidak sekompak
Metode perulangan dengan Python ini sangat jarang
rentang panjang
Saya sering melihat programmer Python baru mencoba membuat ulang 1 2 3 4 5 2 tradisional dengan cara yang sedikit lebih kreatif di Python
1 2 3 colors = ["red", "green", "blue", "purple"] for i in range(len(colors)): print(colors[i])
Ini pertama-tama membuat rentang yang sesuai dengan indeks dalam daftar kami (colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 3 hingga colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 4). Kita dapat mengulang rentang ini menggunakan loop for-in Python (benar-benar foreach)
Ini memberi kami indeks dari setiap item dalam daftar colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 5 kami, yang merupakan cara kerja loop C-style 1 2 3 4 5 2. Untuk mendapatkan warna sebenarnya, kami menggunakan colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 7
untuk masuk. cara biasa
Metode while loop dan range-of-len bergantung pada perulangan indeks. Tapi kami sebenarnya tidak peduli dengan indeks. kami hanya menggunakan indeks ini untuk tujuan mengambil elemen dari daftar kami
Karena kita tidak terlalu peduli dengan indeks di loop kita, ada metode perulangan yang jauh lebih sederhana yang bisa kita gunakan
1 2 3 colors = ["red", "green", "blue", "purple"] for color in colors: print(color)
Jadi alih-alih mengambil indeks item dan mencari setiap elemen, kita bisa mengulang daftar kita menggunakan loop for-in biasa
Dua metode lain yang kita diskusikan kadang-kadang disebut sebagai anti-pola karena merupakan pola pemrograman yang secara luas dianggap unidiomatis.
Bagaimana jika kita membutuhkan indeks?
Bagaimana jika kita benar-benar membutuhkan indeks?
rentang panjang
Kita bisa menggunakan colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 _8 dan kemudian mencari indeks seperti sebelumnya
1 2 3 presidents = ["Washington", "Adams", "Jefferson", "Madison", "Monroe", "Adams", "Jackson"] for i in range(len(presidents)): print("President {}: {}".format(i + 1, presidents[i]))
Tapi ada cara yang lebih idiomatis untuk menyelesaikan tugas ini. gunakan fungsi colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 _9
menghitung
Fungsi colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 _9 bawaan Python memungkinkan kita untuk mengulang daftar dan mengambil indeks dan nilai setiap item dalam daftar
1 2 3 var colors = ["red", "green", "blue", "purple"]; for (var i = 0; i < colors.length; i++) { console.log(colors[i]); } 1
Fungsi colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 _9 memberi kita iterable di mana setiap elemen adalah tupel yang berisi indeks item dan nilai item asli
Fungsi ini dimaksudkan untuk menyelesaikan tugas
- Mengakses setiap item dalam daftar (atau iterable lainnya)
- Juga mendapatkan indeks dari setiap item yang diakses
Jadi kapan pun kita membutuhkan indeks item saat mengulang, kita harus memikirkan colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 9
Catatan. opsi 1 2 3 _3 ke colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 9 di sini adalah opsional. Jika kami tidak menentukan ini, kami akan mulai menghitung pada colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 3 secara default
Bagaimana jika kita perlu mengulang banyak hal?
Seringkali saat kita menggunakan indeks daftar, itu untuk mencari sesuatu di daftar lain
menghitung
Misalnya, di sini kita mengulang dua daftar sekaligus menggunakan indeks untuk mencari elemen yang sesuai
1 2 3 4 5 var colors = ["red", "green", "blue", "purple"]; for (var i = 0; i < colors.length; i++) { console.log(colors[i]); } 3
Perhatikan bahwa kami hanya memerlukan indeks dalam skenario ini karena kami menggunakannya untuk mencari elemen pada indeks yang sama di daftar kedua kami. Yang benar-benar kami inginkan adalah mengulang dua daftar secara bersamaan. indeks hanya menyediakan sarana untuk melakukan itu
zip
Kami sebenarnya tidak peduli dengan indeks saat mengulang di sini. Tujuan sebenarnya kami adalah mengulang dua daftar sekaligus. Kebutuhan ini cukup umum sehingga ada fungsi bawaan khusus untuk ini
Fungsi 1 2 3 _6 Python memungkinkan kita untuk mengulang beberapa daftar sekaligus
1 2 3 4 var colors = ["red", "green", "blue", "purple"]; for (var i = 0; i < colors.length; i++) { console.log(colors[i]); } 5
Fungsi 1 2 3 _6 mengambil banyak daftar dan mengembalikan iterable yang menyediakan tuple dari elemen yang sesuai dari setiap daftar saat kita mengulanginya
Perhatikan bahwa 1 2 3 _6 dengan daftar ukuran berbeda akan berhenti setelah daftar terpendek kehabisan item. Anda mungkin ingin memeriksa apakah Anda memerlukan perilaku yang berbeda. Perhatikan juga bahwa 1 2 3 _6 di Python 2 mengembalikan daftar tetapi 1 2 3 6 di Python 3 mengembalikan iterable malas. Dalam Python 2, colors = ["red", "green", "blue", "purple"] for i in range(len(colors)): print(colors[i]) _1 setara dengan fungsi Python 3 1 2 3 6 yang lebih baru
Lembar contekan berulang
Berikut adalah lembar contekan perulangan yang sangat singkat yang dapat membantu Anda mengingat konstruk pilihan untuk masing-masing dari ketiga skenario perulangan ini
Ulangi satu daftar dengan for-in reguler
var colors = ["red", "green", "blue", "purple"]; for (var i = 0; i < colors.length; i++) { console.log(colors[i]); } 6var colors = ["red", "green", "blue", "purple"]; for (var i = 0; i < colors.length; i++) { console.log(colors[i]); } 7
Ulangi beberapa daftar sekaligus dengan 1 2 3 6
var colors = ["red", "green", "blue", "purple"]; for (var i = 0; i < colors.length; i++) { console.log(colors[i]); } 6var colors = ["red", "green", "blue", "purple"]; for (var i = 0; i < colors.length; i++) { console.log(colors[i]); } 9
Ulangi daftar sambil melacak indeks dengan colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 9
var colors = ["red", "green", "blue", "purple"]; for (var i = 0; i < colors.length; i++) { console.log(colors[i]); } 61 2 3 4 5 1
Kesimpulan
Jika Anda tergoda untuk menggunakan colors = ["red", "green", "blue", "purple"] for i in range(len(colors)): print(colors[i]) 5 atau penghitung lingkaran, pikirkan apakah Anda dapat membingkai ulang masalah Anda untuk memungkinkan penggunaan 1 2 3 6 atau colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 9 (atau kombinasi keduanya)
Bahkan, jika Anda menemukan diri Anda meraih colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 9, pikirkan apakah Anda benar-benar membutuhkan indeks sama sekali. Sangat jarang membutuhkan indeks dengan Python
- Jika Anda perlu mengulang beberapa daftar sekaligus, gunakan 1 2 3 6
- Jika Anda hanya perlu mengulang satu daftar, gunakan saja for-in loop
- Jika Anda perlu mengulang daftar dan Anda memerlukan indeks item, gunakan colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 9
Jika Anda kesulitan menemukan cara terbaik untuk mengulang, coba gunakan lembar contekan di atas
Latihan membuat sempurna
Anda tidak belajar dengan meletakkan informasi di kepala Anda, Anda belajar dengan mencoba mengambil informasi dari kepala Anda. Jadi Anda baru saja membaca artikel tentang sesuatu yang baru, tetapi Anda belum mempelajarinya
Tulis beberapa kode yang menggunakan colors = ["red", "green", "blue", "purple"] i = 0 while i < len(colors): print(colors[i]) i += 1 9 dan 1 2 3 6 hari ini dan kemudian kuis diri Anda besok tentang berbagai cara perulangan dengan Python. Anda harus melatih keterampilan ini jika ingin benar-benar mengingatnya
Jika Anda ingin mendapatkan pengalaman langsung berlatih Python setiap minggu, saya memiliki layanan pengembangan keterampilan Python yang harus Anda pertimbangkan untuk bergabung. Jika Anda mendaftar ke Python Morsels, saya akan memberi Anda latihan pengulangan Python sekarang dan kemudian saya akan mengirimi Anda satu latihan Python baru setiap minggu setelah itu
Dapatkan latihan Python Morsels sayaSaya tidak akan membagikan info kepada Anda dengan orang lain (lihat Kebijakan Privasi Python Morsels untuk detailnya)
Formulir ini dilindungi reCAPTCHA (Kebijakan Privasi dan TOS Google)
Isi formulir di atas untuk mendaftar ke Python Morsels, berlatih dengan fungsi 1 2 3 6, dan mulai tingkatkan keterampilan Python Anda setiap minggu