Bagaimana Anda melacak indeks dengan python?

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

  1. Tetapkan variabel penghitung
    1
    2
    3
    4
    5
    
    _7 ke 0
  2. Periksa apakah penghitung kurang dari panjang array
  3. Jalankan kode dalam loop atau keluar dari loop jika penghitung terlalu tinggi
  4. 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

  1. Mengakses setiap item dalam daftar (atau iterable lainnya)
  2. 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]);
}
6
var 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]);
}
6
var 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]);
}
6
1
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

  1. Jika Anda perlu mengulang beberapa daftar sekaligus, gunakan
    1
    2
    3
    
    6
  2. Jika Anda hanya perlu mengulang satu daftar, gunakan saja for-in loop
  3. 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 saya

Saya 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

Bagaimana Anda menampilkan indeks dengan Python?

Untuk memfasilitasi ini, Python memiliki fungsi bawaan yang disebut index() . Fungsi ini mengambil elemen sebagai argumen dan mengembalikan indeks. Dengan menggunakan fungsi ini, kita dapat menemukan indeks suatu elemen dalam daftar dengan Python.

Bagaimana cara kerja indeks () di Python?

Metode index() Python membantu Anda menemukan posisi indeks suatu elemen atau item dalam string karakter atau daftar item. It spits out the lowest possible index of the specified element in the list. In case the specified item does not exist in the list, a ValueError is returned.

Bagaimana cara memeriksa indeks untuk loop Python?

Kita dapat mengakses indeks dengan Python dengan menggunakan. .
Menggunakan elemen indeks
Menggunakan menghitung()
Menggunakan Pemahaman Daftar
Menggunakan zip()