Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #4329
| From | Mike Müller <mmueller@python-academy.de> |
|---|---|
| Newsgroups | de.comp.lang.python |
| Subject | Re: [Python-de] Schleifen die ohne Durchlaufen des Schleifenkörpers beendet wurden |
| Date | 2016-03-25 12:49 +0100 |
| Organization | Python Academy GmbH & Co. KG |
| Message-ID | <mailman.1.1458907747.28225.python-de@python.org> (permalink) |
| References | (1 earlier) <CAMSP2L7OBP5h4yjrRrx4XuvwE3UMTg=grZqPzJ7B9ZEyYYXD5A@mail.gmail.com> <E7199327-B882-4691-A703-351C20DFE173@web.de> <A201B172-63F7-484B-80FB-EB92999275A7@darwin.in-berlin.de> <533CBF60-D919-4211-8155-ACC90B848839@web.de> <56F47AD1.5040008@chrisarndt.de> |
[Multipart message — attachments visible in raw view] - view raw
Am 25.03.16 um 00:40 schrieb Christopher Arndt:
> Am 24.03.2016 um 23:46 schrieb Diez B. Roggisch:
>> Huh, im Zeitalter von ternary if’s noch den OR-Trick ;)
>
> Der "OR-Trick" ist auch in Zeiten von "expr if expr else expr" noch des
> öfteren hilfreich weil oft kürzer. Er ist ja eigentlich nur eine andere
> Form von "expr1 if expr1 else expr2" (wobei expr1 nur einmal evaluiert
> wird).
>
> Was man nicht mehr verwenden sollte, ist "expr and non-false-expr or expr".
>
>> Ich denke wenn wuerde ich das eher kapseln in ein
>>
>> def loop_or_else(iterable, sideeffect):
>> looped = False
>> for item in iterable:
>> looped = True
>> yield item
>> if not looped:
>> sideeffect()
>
> Wenn man weiß, dass ein bestimmter Wert niemals ein Element des
> Iterables sein wird, kann man das auch so verkürzen:
>
> i = SENTINEL
> for i in collection:
> do_item(i)
> if i == SENTINEL:
> and_now_for_something_completely_different()
>
> Ist immerhin nur eine Zeile mehr als die usprl. geforderte Lösung.
Ich würde das so machen:
senti = senti_start = object()
for i in collection:
senti = do_item()
if senti is senti_start:
empty()
object() ist der Sentinel schlechthin.
Alle Funktionen haben immer einen Rückgabewert. Damit muss ich `i`
nicht zwingend als Argument mitgeben.
Viele Grüße
Mike
Back to de.comp.lang.python | Previous | Next | Find similar
Re: [Python-de] Schleifen die ohne Durchlaufen des Schleifenkörpers beendet wurden Mike Müller <mmueller@python-academy.de> - 2016-03-25 12:49 +0100
csiph-web