für-wenn auch ohne Liste Verständnis in einer Zeile

können diese in eine Zeile geschrieben werden, ohne Liste Verstehens?

for x in vec: 
    if x > 3:
         ...
         ...
  • Warum nicht? / Warum 1 Zeile?
  • Ich bin nicht allzu vertraut mit Ihnen, würde aber eine lambda Aussage angemessen?
  • Ein lambda allein wäre Unsinn. Als Prädikat für i-/filter, ja.
  • Hängt davon ab, was du damit meinst "das". Welche Kriterien muss Sie erfüllen, um als äquivalent zu dem code, den Sie gab? Offensichtlich 100% äquivalenz bedeuten würde, dauerte es mehr als eine Zeile.
  • Wenn x ist ein großes Wort, ich muss zu geben es zweimal ein. Ich Frage mich, ob es einen Weg gibt, um eine Bedingung hinzuzufügen, um die Schleife direkt
  • Auch, hat der einen Linie sind die Anweisungen innerhalb des "if", oder nur die für und die wenn?
  • Ich muss es zweimal, ich bin so froh, Sie haben demonstriert, warum ich gewählt, um in der Nähe diese Frage.
  • Ich wusste von der Absicht der Programmierer ändert den Wert der Frage. In der Tat ist der Wert in den Inhalten, nicht in der Absicht.
  • Beachten Sie, dass der saubere Weg dies zu tun ist nicht, was der Zustand in einen lambda-Ausdruck oder eine unangenehme generator-Ausdruck; sagen Sie einfach nur for x in vec: if x <= 3: continue; .... "Tun Sie es in einer Zeile" ist nur selten eine geeignete design-Einschränkung.

InformationsquelleAutor Roberto | 2010-11-19
Schreibe einen Kommentar