for i in ...:
for j in ...:
for k in ...:
if something:
# continue loop i
Dalam kasus umum, ketika Anda memiliki beberapa tingkat perulangan dan break
tidak bekerja untuk Anda (karena Anda ingin melanjutkan salah satu loop atas, bukan yang tepat di atas yang sekarang), Anda dapat melakukan salah satu dari yang berikut ini
Perbaiki kembali loop yang ingin Anda hindari dari fungsi
def inner():
for j in ...:
for k in ...:
if something:
return
for i in ...:
inner()
Kerugiannya adalah bahwa Anda mungkin perlu beralih ke fungsi baru itu beberapa variabel, yang sebelumnya dalam cakupan. Anda bisa meneruskannya sebagai parameter, menjadikannya variabel instan pada objek (buat objek baru hanya untuk fungsi ini, jika masuk akal), atau variabel global, lajang, apa pun (ehm, ehm).
Atau Anda dapat mendefinisikan inner
sebagai fungsi bersarang dan membiarkannya menangkap apa yang dibutuhkannya (mungkin lebih lambat?)
for i in ...:
def inner():
for j in ...:
for k in ...:
if something:
return
inner()
Gunakan pengecualian
Secara filosofis, inilah pengecualian untuk, memutus aliran program melalui blok bangunan pemrograman terstruktur (jika, untuk, sementara) bila perlu.
Keuntungannya adalah Anda tidak perlu memecah satu bagian kode menjadi beberapa bagian. Ini bagus jika ini semacam perhitungan yang Anda rancang saat menulisnya dengan Python. Memperkenalkan abstraksi pada titik awal ini dapat memperlambat Anda.
Hal buruk dengan pendekatan ini adalah bahwa penulis interpreter / kompiler biasanya berasumsi bahwa pengecualian adalah pengecualian dan mengoptimalkannya.
class ContinueI(Exception):
pass
continue_i = ContinueI()
for i in ...:
try:
for j in ...:
for k in ...:
if something:
raise continue_i
except ContinueI:
continue
Buat kelas pengecualian khusus untuk ini, sehingga Anda tidak mengambil risiko secara tidak sengaja membungkam beberapa pengecualian lain.
Sesuatu yang sama sekali berbeda
Saya yakin masih ada solusi lain.