• Posts
  • RSS
  • ◂◂RSS
  • Contact

  • What is in hindsight a foolish way to do generator expressions

    March 5th, 2009
    python, programming  [html]
    In python I often want to do things like this:
           if x.startswith("foo") for all x in a_list:
              ...
    
           if is_verb(leaf) for some leaf in a_tree:
              ...
        
    I usually end up coding these a bunch of different ways, the shortest of which are:
            if False not in [x.startswith("foo") for x in a_list]:
               ...
    
            if True in [is_verb(leaf) for leaf in a_tree]:
               ...
        
    But these don't short circut and are ugly. Sometimes I'll write little funtions but I don't like that either. Currently the syntax if [expr] for ... doesn't mean anything, so this should be possible. I wonder if it would be worth writing a PEP.

    Update 3/6/2009: George Dahl writes that python already does this. I should be writing those examples as:

           if all(x.startswith("foo") for x in a_list):
              ...
    
           if any(is_verb(leaf) for leaf in a_tree):
              ...
        
    These examples use generator expressions instead of list comprehensions. And builtins any and all. Especially as one can use any function, not just any or all, this is a much nicer syntax than what I wanted. It doesn't read as fluidly as english, but then again it doesn't deal with these two specific case as special cases of the if statement. So I'm quite happy.

    The only other real downside is also I think the reason I didn't end up with this when fiddling around at the python prompt: you need somewhat non-intuitive parens. I'm pretty sure when I was trying to see if there was a way to do what I wanted I did:

        >>> x for x in range(7)
          File "<stdin>", line 1
            x for x in range(7)
                ^
          SyntaxError: invalid syntax
        
    And then moved on. As a human I don't see an obvious reason why I can't enter the obvious thing. Is there something else a statement beginning with "x for " could mean?

    Comment via: facebook

    Recent posts on blogs I like:

    Yet another world spirit sock puppet

    Crossposted from world spirit sock puppet. I have almost successfully made and made decent this here my new blog, in spite of little pre-existing familiarity with relevant tools beyond things like persistence in the face of adversity and Googling things. …

    via Meteuphoric October 25, 2020

    Things You Might Have Missed, October 21, 2020

    Hey folks! I am, as I mentioned last week, taking this week off in an effort to catch up on my sanity and also some grading and writing I need to be doing. But I didn’t want to leave you with nothing, so I thought I might use this as an opportunity to dir…

    via A Collection of Unmitigated Pedantry October 23, 2020

    Job Sprawl as Deurbanization

    A few years ago, Aaron Renn was writing, I think about the General Electric headquarters’ move from suburban New York to Downtown Boston in 2016, that in the future, city center jobs would go to high-value industries like corporate HQs and professional se…

    via Pedestrian Observations October 23, 2020

    more     (via openring)


  • Posts
  • RSS
  • ◂◂RSS
  • Contact