Re:Why I'm still using Python
by pharmakom on Friday December 30, 2022 @04:46PM
(#34190494)
Sorry, but Python list comprehensions are not very good compared to other languages.
[ Parent
| on HN ]
why?
In F# list comprehensions, for example, you can have full blown expressions such as loops and conditionals. This is really nice for templating.
[
if List.isEmpty items then
p “No items”
else
ul
[
for item in items do
li [ item ]
]
]so?
if len(items) == 0: return [p("no items")] else: ul( [ li(item) for item in items ] )
I am also not a fan of convoluted list comprehension (in python) so powerful is not necessarly a good thing.
That only works in a single purpose function.
And consider this example:
[
h1 “items”
if List.isEmpty items then
p “No items”
else
ul
[
for item in items do
li [ item ]
]
]h1(items) + rest of my code...
I might see what are you using for but I am not sure if concenating implicitly (or with line breaks / spaces) is a good design decision for a language.
The yield keyword is optional. The result is a List<HtmlElement>
I don’t see how this can be done in Python without using mutation, which makes code scattered across multiple statements
your example has also multiply statements. The question is more important: Which syntax to a more generally better readability. (as this is solvable in most languages)