Portál AbcLinuxu, 11. května 2025 01:05
for x in c if x > 0: pass
[func(x) for x in c if x > 0]
for i in (x for x in c if x > 0):
pass
for x in c if x > limit: limit = f(x) ...Tj argument podmínky se může měnit s každým cyklem.
for x in (x for x in c if x > 0): print(x) func(x)
Co když v tom těle cyklu budu chtít mít třeba ještě print a něco dalšího?Tak to tělo toho foru dáš do funkce func a bude to fungovat stejně. Ale jasně, ne vždy dává smysl převod na comprehension a někdy jsou mezi jednotlivými běhy toho cyklu nějaká provázání. Na druhou stranu:
for x in c if x > 0: passOdpovídá:
for x in c: if x <= 0: continue passAle chápu o co ti jde. Elegantně to filtrovat přímo v tom foru a ne explicitně v těle. Zrovna ta tebou navrhovaná syntax by mě neurážela.
print(f"Hello {foo}")
?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.