Verschachtelte for-Schleifen in python in einer einzigen Zeile

Hier ist ein wenig code, den ich versuche zu machen, mehr lesbar. Es funktioniert, aber die geschachtelten for-Schleifen und try/wenn macht es ein bisschen schwer zu verstehen, auf den ersten Blick, was Los ist.

Kann mir jemand Vorschläge, wie ich könnte möglicherweise verbinden die verschachtelten for-Schleifen oder verdichten diesen code?

matcher = None
if re.match(_RE_OBJECT, nodes.replace(LQMN, '')):
  matcher = alias
else:    
  for x in lister[0].conditions:
    for y in x.codes:
      try:
        if y.id.split(',')[1] == condition:
          matcher = x.codenames
      except IndexError:
        pass
  • Ich glaube nicht, dass Sie machen den code "lesbarer", wenn Sie kondensieren, Ihre for-Schleifen in einer einzigen Zeile. Sind Sie auf der Suche, um einen kürzeren code, oder einen besser lesbaren code? (Ehrlich gesagt, dieser code ist nicht unlesbar oder tief über verschachtelte...)
  • Im Idealfall versuchen, um besser lesbaren code.
  • Ihre for loops & try:... except block sind in Ordnung. Aber man könnte re.compile() auf Ihre _RE_OBJECT. (Und würde der code Aussehen angenehmer, wenn Sie eingerückt mit 4 Leerzeichen anstelle von 2. IMHO). Und wenn es Ihr Ziel ist readibility, dann versuchen, aussagekräftigere Namen als x und y. Kurz -, Wegwerf-Namen sind ok, im single-loops, aber Sie beginnen immer ein bisschen stumpf in tief verschachtelten code.
  • Dann setzen geschachtelten for-Schleifen wird nicht helfen, Ihre zu viel. Ich denke, das ist ziemlich lesbar, auch wenn ich nicht weiß, was lister ist, ich weiß, was Los ist. Zusätzlich wird die einzige änderung die ich machen würde ist eine tiefere Einkerbung. (Aber das könnte auch die Formatierung SO nicht im tatsächlichen code, afaik python-Einrückung (4 Räume).
  • Python ist es egal, wie groß die Einrückung Einheiten sind, solange Ihre dedents passen Sie Ihre Einzüge. Sie können Leerzeichen Einrücken - die ich oft in den interaktiven interpreter, aber es sieht wirklich hässlich in einem script, weil es macht es wirklich schwer zu verfolgen, was passiert.
  • Ich meinte, "ist 4 Leerzeichen standardmäßig", so Reiter produziert 4 Räume, erhalten Sie automatisch 4 Leerzeichen Einzug-nach einem : etc...weit aus, dass es eine Konstante.
  • Das ist eine gängige Konvention in der modernen Editoren, aber nicht universal. Und es ist leicht geändert. FWIW, Python behandelt einen aktuellen tab-Zeichen (ich.e \t, chr(9)) in der Quelle als äquivalent zu den (bis zu) 8 Räume, wie das ist, einen weit älteren übereinkommen. Siehe stackoverflow.com/questions/2034517/... und docs.python.org/2/reference/lexical_analysis.html#indentation . Aber ich denke, diese Diskussion entgleisen nerdinary die Frage ein wenig, also vielleicht sollten wir es weiter in der Python-Chat-Raum.
  • 2 Leerzeichen für die Einrückung ist ein standard zur Codierung von wo ich arbeite, also das ist nicht zu ändern. Ich benutzte x-und y hier nur für eine Frage, Sie haben die besseren Namen 🙂
  • cool. Aber Sie haben mein Mitgefühl auf die 2 Leerzeichen Einrücken, was bei der Arbeit. 🙂 FWIW, ich habe 2 Leerzeichen eingerückt, als ich angefangen habe Python. Ich habe konvertiert, die meisten meiner alten code zu 4 Leerzeichen, aber ich gelegentlich in alte 2-Raum-Zeug, und es sieht einfach eng zu mir.

InformationsquelleAutor nerdinary | 2015-03-05
Schreibe einen Kommentar