Saya memiliki daftar yang terdiri dari 20.000 daftar. Saya menggunakan elemen ke-3 daftar masing-masing sebagai bendera. Saya ingin melakukan beberapa operasi pada daftar ini selama setidaknya satu flag elemen adalah 0, seperti:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
Pada awalnya, semua flag adalah 0. Saya menggunakan loop sementara untuk memeriksa apakah setidaknya satu flag elemen adalah 0:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
Jika check(my_list)
kembali True
, maka saya terus mengerjakan daftar saya:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
Sebenarnya, saya ingin menghapus elemen di my_list saat saya mengulanginya, tapi saya tidak diizinkan untuk menghapus item karena saya mengulanginya.
My_list asli tidak memiliki bendera:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Karena saya tidak bisa menghapus elemen ketika saya mengulanginya, saya membuat flag-flag ini. Tetapi yang my_list
berisi banyak item, dan while
loop membaca semuanya pada setiap for
loop, dan itu menghabiskan banyak waktu! Apakah Anda punya saran?
None
atau []
saat Anda mengulangi daftar alih-alih menghapusnya. Memeriksa seluruh daftar dengan 'check () `iterasi pada semua item sebelum setiap pass pada loop dalam adalah pendekatan yang sangat lambat.