20000 listeden oluşan bir listem var. Her listenin 3. öğesini bayrak olarak kullanıyorum. En az bir öğenin bayrağı 0 olduğu sürece bu listede bazı işlemler yapmak istiyorum, şöyle:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
Başlangıçta, tüm bayraklar 0'dır. En az bir elemanın bayrağının 0 olup olmadığını kontrol etmek için while döngüsü kullanıyorum:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
check(my_list)
İade olursa True
, listemde çalışmaya devam ediyorum:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
Aslında, yinelediğim gibi my_list öğesindeki bir öğeyi kaldırmak istedim, ancak yinelediğimde öğeleri kaldırmam yasak.
Orijinal listemde bayrak yoktu:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Üzerinde yineleme yaptığım için elemanları kaldıramadığım için bu bayrakları icat ettim. Ancak my_list
birçok öğe içerir ve while
döngü her for
döngüde hepsini okur ve çok zaman alır! Önerin var mı?
None
ya []
da tekrarlayarak değiştirebilirsiniz . Tüm listeyi iç döngüdeki her geçişten önce tüm öğeleri yineleyen 'check () `ile kontrol etmek çok yavaş bir yaklaşımdır.