मेरी एक सूची है जिसमें 20000 सूचियां शामिल हैं। मैं प्रत्येक सूची के तीसरे तत्व को ध्वज के रूप में उपयोग करता हूं। मैं इस सूची में कुछ कार्यों में करना चाहते हैं जब तक कम से कम एक तत्व के झंडे 0 है, यह की तरह है:कैसे जांचें कि किसी सूची के सभी तत्व किसी शर्त से मेल खाते हैं या नहीं?
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
शुरुआत में सभी झंडे 0. मैं जाँच करने के लिए थोड़ी देर के पाश का उपयोग कर रहे हैं, तो कम से कम एक तत्व की झंडा 0 है:
def check(lista):
for item in lista:
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 में तत्व को दूर करने के लिए चाहते थे के रूप में मैं दोहराया इसके ऊपर, लेकिन मुझे आइटम को हटाने की अनुमति नहीं है क्योंकि मैं इसे फिर से चालू करता हूं।
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
के रूप में मैं दोहराया इस पर, मैं इन झंडे का आविष्कार के बाद से मैं तत्वों को नहीं निकाल सका:
मूल my_list झंडे नहीं था। लेकिन my_list
में कई आइटम हैं, और while
लूप प्रत्येक for
लूप पर उन सभी को पढ़ता है, और यह बहुत समय लगता है! क्या तुम्हारे पास कोई सुझाव है?
ऐसा लगता है कि अपने डेटा संरचना आपकी समस्या के लिए आदर्श नहीं है।यदि आपने संदर्भ को थोड़ा और समझाया है तो शायद हम कुछ और उचित सुझाव दे सकते हैं। – uselpa
हो सकता है कि आप आइटम को 'कोई नहीं' या '[]' के साथ प्रतिस्थापित कर सकें क्योंकि आप उन्हें हटाने के बजाय सूची में पुन: प्रयास करते हैं। आंतरिक लूप पर प्रत्येक पास से पहले सभी वस्तुओं पर 'चेक() 'पुनरावृत्ति के साथ पूरी सूची की जांच करना बहुत धीमा दृष्टिकोण है। – martineau