Ty dva ify v sobě jsou nečitelné hlavně proto, že autor nepoužil závorku k vyjasnění struktury ve výrazu - závorka dost podle mě pomůže:
converted = ["negative" if x < 0 else ("positive" if x > 0 else "zero") for x in values]
Dokonce můžeš napsat třeba tohle, tam nevidím žádnou nejasnost:
converted = [ "negative" if x < 0 else "positive" if x > 0 else "zero" for x in values ]
Pro složitější věci lze vždycky napsat funkci a pak ji použít.
Konkrétně je obojí kupa hnoje. První zápis bych asi ještě zkousnul. Ale zapsat to na více řádků mě přijde jako úplný nesmysl. Tam postrádám jediný rozumný důvod proč nepoužít for a vnořené if. Navíc je to ještě nečitelnější než bez jakýchkoliv závorek.
l = []
for x in values
if x < 0:
l.append("negative")
elif x > 0:
l.append(""positive")
else:
l.append("zero")
nebo ješte lépe, jak bych to udělal:
def foo(x):
if x < 0:
return "negative"
elif x > 0:
return ""positive"
else:
return "zero"
converted = [foo(x) for x in values]