मेरे पास एक सूची है जिसमें 20000 सूची शामिल हैं। मैं ध्वज के रूप में प्रत्येक सूची के तीसरे तत्व का उपयोग करता हूं। मैं इस सूची में कुछ संचालन करना चाहता हूं जब तक कि कम से कम एक तत्व का झंडा 0 है, यह इस प्रकार है:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
शुरुआत में, सभी झंडे 0 हैं। मैं थोड़ी देर के लूप का उपयोग करता हूं यह जांचने के लिए कि क्या कम से कम एक तत्व का झंडा 0 है:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
यदि check(my_list)रिटर्न मिलता है True, तो मैं अपनी सूची पर काम करना जारी रखता हूं:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
दरअसल, मैं my_list में एक तत्व को हटाना चाहता था क्योंकि मैंने इस पर iterated किया था, लेकिन जैसे ही मैं इसके बारे में पुनरावृति करता हूं, मुझे आइटम निकालने की अनुमति नहीं है।
मूल my_list में झंडे नहीं थे:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
चूँकि मैं तत्वों को हटा नहीं सका क्योंकि मैंने इस पर ध्यान दिया, मैंने इन झंडों का आविष्कार किया। लेकिन my_listकई आइटम शामिल हैं, और whileलूप उन सभी को प्रत्येक forलूप में पढ़ता है , और इसमें बहुत समय लगता है! क्या तुम्हारे पास कोई सुझाव है?
Noneया []आप उन्हें हटाने के बजाय सूची पर पुनरावृति के रूप में। 'लूप' (') के साथ पूरी सूची की जांच करना, आंतरिक लूप पर प्रत्येक पास से पहले सभी मदों पर पुनरावृत्ति करना एक बहुत ही धीमा तरीका है।