Apa yang bisa saya gunakan sebagai pengganti for loop di python?

for loop digunakan ketika Anda memiliki blok kode yang ingin Anda ulangi beberapa kali. For-loop selalu digunakan dalam kombinasi dengan objek yang dapat diubah, seperti daftar atau rentang. Pernyataan Python for mengulangi anggota urutan secara berurutan, mengeksekusi blok setiap kali. Bandingkan pernyataan for dengan perulangan '' while'', digunakan ketika suatu kondisi perlu diperiksa setiap iterasi atau untuk mengulang blok kode selamanya. Sebagai contoh

Untuk loop dari 0 ke 2, oleh karena itu berjalan 3 kali

for x in range(0, 3):
    print("We're on time %d" % (x))

While loop dari 1 hingga tak terhingga, oleh karena itu berjalan selamanya

x = 1
while True:
    print("To infinity and beyond! We're getting close, on %d now!" % (x))
    x += 1
_

Saat menjalankan contoh di atas, Anda dapat menghentikan program dengan menekan ctrl+c secara bersamaan. Seperti yang Anda lihat, konstruksi loop ini melayani tujuan yang berbeda. Perulangan for berjalan untuk jumlah waktu yang tetap, sedangkan perulangan while berjalan hingga kondisi perulangan berubah. Dalam contoh ini, kondisinya adalah boolean True yang tidak akan pernah berubah, sehingga akan berjalan selamanya

Bagaimana mereka bekerja?

Jika Anda pernah melakukan pemrograman apa pun sebelumnya, Anda pasti menemukan for loop atau yang setara dengannya. Banyak bahasa memiliki kondisi dalam sintaks perulangannya, seperti ekspresi relasional untuk menentukan apakah perulangan selesai, dan ekspresi kenaikan untuk menentukan nilai perulangan berikutnya. Dalam Python, ini malah dikontrol dengan menghasilkan urutan yang sesuai. Pada dasarnya, objek apa pun dengan metode iterable dapat digunakan dalam perulangan for. Bahkan string, meskipun tidak memiliki metode yang dapat diulang - tetapi kita tidak akan membahasnya di sini. Memiliki metode iterable pada dasarnya berarti bahwa data dapat disajikan dalam bentuk daftar, di mana terdapat banyak nilai secara teratur. Anda dapat mendefinisikan iterable Anda sendiri dengan membuat objek dengan metode next() dan iter(). Ini berarti bahwa Anda akan jarang berurusan dengan angka mentah jika menyangkut for loop di Python - bagus untuk hampir semua orang

Loop bersarang

Ketika Anda memiliki blok kode yang ingin Anda jalankan x beberapa kali, kemudian blok kode di dalam kode itu yang ingin Anda jalankan y beberapa kali, Anda menggunakan apa yang dikenal sebagai "loop bersarang". Dalam Python, ini banyak digunakan setiap kali seseorang memiliki daftar daftar - objek yang dapat diubah di dalam objek yang dapat diubah

for x in range(1, 11):
    for y in range(1, 11):
        print('%d * %d = %d' % (x, y, x*y))

Seperti perulangan while, perulangan for dapat dibuat untuk keluar sebelum objek yang diberikan selesai. Ini dilakukan dengan menggunakan pernyataan break, yang akan segera keluar dari perulangan dan melanjutkan eksekusi pada pernyataan pertama setelah blok. Anda juga dapat memiliki klausa else opsional, yang akan berjalan jika for loop keluar dengan bersih - yaitu, tanpa putus

for x in range(3):
    if x == 1:
        break

Contoh

Untuk. Kalau tidak

for x in range(3):
    print(x)
else:
    print('Final x = %d' % (x))
_

String sebagai iterable

string = "Hello World"
for x in string:
    print(x)

Daftar sebagai iterable

collection = ['hey', 5, 'd']
for x in collection:
    print(x)
_

Ulangi Daftar daftar

list_of_lists = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]
for list in list_of_lists:
    for x in list:
        print(x)

Membuat iterable Anda sendiri

class Iterable(object):

    def __init__(self,values):
        self.values = values
        self.location = 0

    def __iter__(self):
        return self

    def next(self):
        if self.location == len(self.values):
            raise StopIteration
        value = self.values[self.location]
        self.location += 1
        return value
_

Generator jangkauan Anda sendiri menggunakan hasil

def my_range(start, end, step):
    while start <= end:
        yield start
        start += step

for x in my_range(1, 10, 0.5):
    print(x)
_

Catatan tentang `rentang`

Fungsi ini sering terlihat dalam pernyataan for sehingga Anda mungkin mengira range adalah bagian dari sintaks for. Bukan itu. itu adalah fungsi bawaan Python yang mengembalikan urutan mengikuti pola tertentu (paling sering bilangan bulat berurutan), yang dengan demikian memenuhi persyaratan menyediakan urutan untuk pernyataan for untuk mengulangi. Karena for dapat beroperasi langsung pada urutan, seringkali tidak perlu menghitung. Ini adalah konstruksi pemula yang umum (jika mereka berasal dari bahasa lain dengan sintaks loop yang berbeda)

Jika Anda adalah seseorang yang selalu menggunakan loop for dan loop forEach untuk mengulangi item dalam array, maka ini untuk Anda. Kami akan mengeksplorasi beberapa metode array yang dapat Anda terapkan sebagai alternatif untuk loop "untuk" sederhana

Ada banyak keuntungan menggunakan metode khusus dibandingkan versi for atau forEach generik

  • Menulis itu mudah dan orang lain dapat menafsirkannya dengan mudah
  • Sangat mudah untuk memelihara, memperluas, dan menguji
  • Anda dapat menulis fungsi murni tanpa efek samping
  • Membantu Anda berpikir dalam hal pemrograman fungsional
  • Jika Anda pernah berencana untuk menggunakan pustaka seperti RxJS, itu pasti akan membantu
Menggunakan Peta

Kode di bawah ini terlihat cukup familiar, bukan?

find square of numbersvar numberArray = [1,2,3,4,5,6,7,8,9,10];//for Version
var squareNumbers = [];
for (var counter=0; counter < numberArray.length; counter++){
squareNumbers.push(numberArray[counter] * numberArray[counter])
}
console.log(squareNumbers);

Himpunan. peta adalah fungsi bawaan yang menghasilkan larik baru dengan mengubah setiap elemen larik sumber menjadi nilai baru berdasarkan metode yang disediakan untuk transformasi

Itu mengulang semua elemen secara berurutan, memanggil fungsi transformasi yang disediakan untuk setiap elemen, dan secara internal mendorong hasilnya ke dalam array baru. Kita hanya perlu menyediakan fungsi transformasi, dan pekerjaan selanjutnya akan dilakukan oleh fungsi

find square of numbersvar numberArray = [1,2,3,4,5,6,7,8,9,10];//Map version
var squareNumbers = numberArray.map(number => number*number);
console.log(squareNumbers);
2. Sebagai contoh

find square of numbersvar numberArray = [1,2,3,4,5,6,7,8,9,10];//Map version
var squareNumbers = numberArray.map(number => number*number);
console.log(squareNumbers);

Secara sederhana,

find square of numbersvar numberArray = [1,2,3,4,5,6,7,8,9,10];//Map version
var squareNumbers = numberArray.map(number => number*number);
console.log(squareNumbers);
_3 mengubah array yang diberikan menjadi yang baru setelah melakukan fungsi transformasi pada setiap elemen dalam array

Himpunan. prototipe. peta()

Metode map() membuat larik baru yang diisi dengan hasil pemanggilan fungsi yang disediakan pada setiap elemen di…

pengembang. mozilla. org

Menggunakan Filter

Anda melihat bahwa for_ di bawah ini mengambil setiap elemen dari array, memeriksa beberapa kondisi (di sini memeriksa angka genap atau tidak), dan jika kondisinya benar maka itu menempatkannya ke dalam array baru

Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//for Version
var evenNumbers = [];
for (var counter=0; counter < numberArray.length; counter++){
if (numberArray[counter] %2 === 0){
evenNumbers.push(numberArray[counter])
}
}
console.log(evenNumbers);

Himpunan. filter adalah fungsi berguna lainnya yang membangun array elemen baru berdasarkan fungsi "validator" yang diberikan. Itu mengulang semua elemen array sumber, memanggil fungsi "validator" untuk setiap item, jika fungsi "validator" mengembalikan nilai true, elemen tersebut akan ditambahkan secara internal ke array baru. Dengan fungsi

find square of numbersvar numberArray = [1,2,3,4,5,6,7,8,9,10];//Map version
var squareNumbers = numberArray.map(number => number*number);
console.log(squareNumbers);
5, kita hanya dapat menyediakan logika "validasi" inti dari fungsi tersebut, meninggalkan sisa pekerjaan ke
find square of numbersvar numberArray = [1,2,3,4,5,6,7,8,9,10];//Map version
var squareNumbers = numberArray.map(number => number*number);
console.log(squareNumbers);
5 yang membuatnya mudah untuk ditulis dan dipahami

Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//filter version
var evenNumbers2 = numberArray.filter(number => number%2===0);
console.log(evenNumbers2);

Melihat fungsi yang sama diimplementasikan dengan

find square of numbersvar numberArray = [1,2,3,4,5,6,7,8,9,10];//Map version
var squareNumbers = numberArray.map(number => number*number);
console.log(squareNumbers);
7, segera menjadi jelas bahwa itu memfilter array asli berdasarkan kondisi yang digunakan di dalam fungsi "validator"

Dengan versi for dan forEach, kita perlu menganalisis bahwa ada array kosong dan kemudian elemen ditambahkan ke dalamnya berdasarkan kondisi. Dengan fungsi

find square of numbersvar numberArray = [1,2,3,4,5,6,7,8,9,10];//Map version
var squareNumbers = numberArray.map(number => number*number);
console.log(squareNumbers);
_5, kita hanya perlu memikirkan logika fungsi validasi dan menyerahkan sisanya ke
find square of numbersvar numberArray = [1,2,3,4,5,6,7,8,9,10];//Map version
var squareNumbers = numberArray.map(number => number*number);
console.log(squareNumbers);
5, dan itu membuat kode terlihat mulus dan natural

Himpunan. prototipe. Saring()

Metode filter() membuat larik baru dengan semua elemen yang lolos pengujian yang diimplementasikan oleh fungsi yang disediakan…

pengembang. mozilla. org

Menggunakan pengurangan

Familiar lain untuk loop adalah di mana kita mengambil setiap elemen dan melakukan semacam operasi akumulasi (di sini menambahkan semua elemen), mengembalikan nilai yang terakumulasi

//find sum of elements in the array
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//for version
var sum = 0;
for (var counter=0; counter < numberArray.length; counter++){
sum += numberArray[counter]
}
console.log(sum);

Himpunan. pengurangan digunakan ketika Anda ingin memproses semua elemen array untuk mendapatkan satu nilai darinya. Reduce sedikit rumit untuk dipahami pada awalnya, tetapi begitu Anda memahaminya, itu sangat mudah digunakan

Penting untuk dicatat bahwa

Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//for Version
var evenNumbers = [];
for (var counter=0; counter < numberArray.length; counter++){
if (numberArray[counter] %2 === 0){
evenNumbers.push(numberArray[counter])
}
}
console.log(evenNumbers);
_2 tidak menjalankan fungsi ketika tidak ada item dalam array dan juga metode ini tidak membuat perubahan apa pun pada array asli

Metode

Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//for Version
var evenNumbers = [];
for (var counter=0; counter < numberArray.length; counter++){
if (numberArray[counter] %2 === 0){
evenNumbers.push(numberArray[counter])
}
}
console.log(evenNumbers);
_2 mengurangi array menjadi satu nilai

Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//for Version
var evenNumbers = [];
for (var counter=0; counter < numberArray.length; counter++){
if (numberArray[counter] %2 === 0){
evenNumbers.push(numberArray[counter])
}
}
console.log(evenNumbers);
_4 mengambil dua argumen, satu adalah fungsi pengurangan dan kedua adalah nilai awal yang disebut akumulator. Itu memanggil fungsi
Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//for Version
var evenNumbers = [];
for (var counter=0; counter < numberArray.length; counter++){
if (numberArray[counter] %2 === 0){
evenNumbers.push(numberArray[counter])
}
}
console.log(evenNumbers);
_5 untuk setiap elemen dengan memberikan nilai akumulator. Pengurangan
Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//for Version
var evenNumbers = [];
for (var counter=0; counter < numberArray.length; counter++){
if (numberArray[counter] %2 === 0){
evenNumbers.push(numberArray[counter])
}
}
console.log(evenNumbers);
_6 memproses elemen saat ini dan memperbarui nilai akumulator dan meneruskannya ke iterasi berikutnya. Di akhir putaran terakhir, akumulator menjadi hasil akhir. Mari kita jelajahi dengan contoh

//find sum of all elements in the array
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//Reduce version
var sum = numberArray.reduce(((acc, num) => acc + num), 0);
console.log(sum);

Komposisi fungsi

Ada metode utilitas array lain seperti

Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//for Version
var evenNumbers = [];
for (var counter=0; counter < numberArray.length; counter++){
if (numberArray[counter] %2 === 0){
evenNumbers.push(numberArray[counter])
}
}
console.log(evenNumbers);
_7,
Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//for Version
var evenNumbers = [];
for (var counter=0; counter < numberArray.length; counter++){
if (numberArray[counter] %2 === 0){
evenNumbers.push(numberArray[counter])
}
}
console.log(evenNumbers);
8,
Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//for Version
var evenNumbers = [];
for (var counter=0; counter < numberArray.length; counter++){
if (numberArray[counter] %2 === 0){
evenNumbers.push(numberArray[counter])
}
}
console.log(evenNumbers);
9,
Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//filter version
var evenNumbers2 = numberArray.filter(number => number%2===0);
console.log(evenNumbers2);
0,
Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//filter version
var evenNumbers2 = numberArray.filter(number => number%2===0);
console.log(evenNumbers2);
1,
Example 1 :- Filter even numbers
var numberArray = [1,2,3,4,5,6,7,8,9,10];
//filter version
var evenNumbers2 = numberArray.filter(number => number%2===0);
console.log(evenNumbers2);
2 yang harus diketahui semua orang. Menggunakan jenis fungsi yang tepat tidak hanya membuat kode lebih bersih, tetapi juga membuatnya mudah untuk diuji dan diperluas. Plus Anda sedang menulis kode futuristik dengan menggunakan fungsi-fungsi ini. Fungsi-fungsi ini adalah fungsi JavaScript asli yang didukung di semua browser dan semakin cepat dari hari ke hari. Ini juga membantu menyusun fungsi yang lebih kecil untuk membuat kasus penggunaan yang lebih luas

using evenNumbers and sum, we can easily fund sum of even numbersvar numberArray = [1,2,3,4,5,6,7,8,9,10];
var FilterFn = (number => number%2===0);
var squareMapFn = (number => number*number);
var sumFn = ((sum, number) => sum + number);var sumOfSquareOfEvenNumbers = numberArray
.filter(FilterFn)
.map(squareMapFn)
.reduce(sumFn,0);
console.log(sumOfSquareOfEvenNumbers)

Menulis contoh di atas dengan loop for konvensional akan membutuhkan lebih banyak baris kode, yang pada akhirnya membuatnya kurang jelas

Himpunan

Kelas JavaScript Array adalah objek global yang digunakan dalam pembangunan array;

pengembang. mozilla. org

Catatan tentang kinerja

Himpunan. filter, peta, beberapa memiliki kinerja yang sama dengan forEach. Ini semua sedikit lebih lambat daripada for/while loop. Kecuali jika Anda sedang mengerjakan fungsionalitas kritis kinerja, itu akan baik-baik saja menggunakan metode di atas. Dengan JIT, mesin eksekusi JavaScript sangat cepat dan semakin cepat dari hari ke hari. Jadi mulailah memanfaatkan metode ini dalam aplikasi Anda

Apa alternatif terbaik untuk loop Python?

Cara yang lebih cepat untuk mengulang di Python menggunakan fungsi bawaan . Dalam contoh kita, kita dapat mengganti perulangan for dengan fungsi penjumlahan. Fungsi ini akan menjumlahkan nilai di dalam rentang angka.

Apa yang bisa saya gunakan selain untuk loop?

Gunakan map() alih-alih for() loop . Jika Anda hanya memiliki pengetahuan tentang for() loop dalam JavaScript, artikel ini akan meminta Anda untuk memahami sintaks Ekspresi Fungsi Panah (a. k. a. fungsi "panah gemuk").

Bagaimana Anda mengulang dengan Python tanpa menggunakan for?

Melakukan perulangan tanpa perulangan for .
Dapatkan iterator dari iterable yang diberikan
Berulang kali dapatkan item berikutnya dari iterator
Jalankan isi for loop jika kita berhasil mendapatkan item berikutnya
Hentikan loop kami jika kami mendapat pengecualian StopIteration saat mendapatkan item berikutnya

Haruskah Anda menghindari for loop dengan Python?

Kita harus mencoba menghindari perulangan sebanyak mungkin saat menulis kode yang efisien . Menghilangkan perulangan biasanya menghasilkan lebih sedikit baris kode yang lebih mudah ditafsirkan. Salah satu idiom kode pythonic adalah “datar lebih baik daripada bersarang. ” Berjuang untuk menghilangkan loop dalam kode kita akan membantu kita mengikuti idiom ini.