Hacker News new | ask | show | jobs
by bertiewhykovich 3499 days ago
In Python, the only good language, this could be expressed as:

    [person for person in (Person(name) for name in names) if person.isValid()]
or:

    filter(lambda p: p.isValid, map(Person, names))
or:

    persons = []
    for name in names:
        person = Person(name)
        if person.isValid():
            persons.append(person)
1 comments

So much for "There's Only One Way To Do It". :)
That is long gone, specially regarding string formatting.
In fairness, the list comprehension would probably be the most "Pythonic" way to do this. The nested iterator might be discouraged (under "explicit is better than implicit," perhaps), so a more Pythonic snippet might look like:

    persons = [Person(name) for name in names]
    valid_persons = [person for person in persons if person.isValid()]
Take this all with a grain of salt, though -- I haven't spent that much time internalizing classical Pythonicness.