Dec
30

Warum Ihre Python-Schleifen möglicherweise nicht richtig iterieren

12/30/2023 03:17 PM von Admin in Python


Als Python-Entwickler bin ich kürzlich auf ein seltsames Problem gestoßen, bei dem Schleifen in meinem Code nicht wie erwartet iterierten. Ich hatte eine Funktion, die eine Liste von Datumsbereichen durchlief, um zu prüfen, ob ein Zeitstempel in einen dieser Bereiche fiel.

Mein Code sah ungefähr so ​​aus:

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)
  )
  • Es wird keine „Zweite Schleife“ gedruckt.

Nach einigem Debuggen bemerkte ich, dass das Problem verschwand, als ich „generate_ranges()“ so änderte, dass eine Liste anstelle eines Generatorausdrucks zurückgegeben wurde:

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

Es scheint, dass der Generatorausdruck ein unerwartetes Verhalten zwischen den Schleifen hervorgerufen hat. Durch die erzwungene Auswertung in einer Liste wurde die Eigenartigkeit behoben.

Wenn Sie also jemals feststellen, dass Schleifen in Ihrem Python-Code nicht wie erwartet iterieren, suchen Sie nach Generatorausdrücken, die zu subtilen Fehlern führen könnten. Die Konvertierung in Standardlisten/-tupel ist eine einfache Möglichkeit, Iteratorprobleme auszuschließen.

Lassen Sie mich wissen, wenn Sie weitere Fragen haben!


Ihre Gedanken

Suche
SPONSOR
Kryptouhr
FOLGE UNS
Neueste Tweets

Neues Tool hinzugefügt: SVG-Zoom-Dimensionsrechner.

SPONSOR