Dec
30

आपका पायथन लूप ठीक से पुनरावृत्त क्यों नहीं हो रहा है?

12/30/2023 03:17 PM द्वारा Admin में Python


एक पायथन डेवलपर के रूप में, मुझे हाल ही में एक अजीब समस्या का सामना करना पड़ा जहां मेरे कोड में लूप मेरी अपेक्षा के अनुरूप पुनरावृत्त नहीं हो रहे थे। मेरे पास एक फ़ंक्शन था जो यह जांचने के लिए दिनांक सीमाओं की सूची पर पुनरावृत्त कर रहा था कि क्या टाइमस्टैम्प किसी भी सीमा के भीतर आता है।

मेरा कोड कुछ इस तरह दिखता था:

def check_timestamp(timestamp):

  date_ranges = generate_ranges() 

  for range in date_ranges:
    print("First loop")

  for range in date_ranges:  
    print("Second loop")

def generate_ranges():
  return (
    {'start': date1, 'end': date2} 
    for date1, date2 in zip(start_dates, end_dates)
  )
  • कोई "दूसरा लूप" प्रिंट नहीं।

कुछ डिबगिंग के बाद, मैंने देखा कि जब मैंने जनरेटर अभिव्यक्ति के बजाय एक सूची वापस करने के लिए generate_ranges() को बदल दिया तो समस्या गायब हो गई:

def generate_ranges():
  return [
    {'start': date1, 'end': date2}
    for date1, date2 in zip(start_dates, end_dates) 
  ]

ऐसा लगता है कि जनरेटर अभिव्यक्ति लूप के बीच कुछ अप्रत्याशित व्यवहार पेश कर रही थी। मूल्यांकन को एक सूची में शामिल करके, इसने विचित्रता का समाधान किया।

इसलिए यदि आप कभी भी अपने पायथन कोड में लूप को उम्मीद के मुताबिक पुनरावृत्त नहीं होते देखते हैं, तो किसी भी जेनरेटर अभिव्यक्ति की जांच करें जो सूक्ष्म बग पेश कर सकता है। उन्हें मानक सूचियों/टुपल्स में परिवर्तित करना पुनरावर्तक समस्याओं को दूर करने का एक आसान तरीका है।

अगर आपके पास कोई अन्य सवाल है तो मुझे बताएं!


अपने विचार

खोज
प्रायोजक
क्रिप्टोवॉच
हमारा अनुसरण करें
घोषणाएं

नया टूल जोड़ा गया: SVG ज़ूम आयाम कैलकुलेटर

प्रायोजक