

Ask HN: is it a good idea in Python? If yes, how to make it not suck? - MHollender
http://pastebin.com/f3799e31d

======
d0mine
Your examples rewritten in a different style:

    
    
      table = ((8, 2, 9), (4, 5, 6), (2, 1, 9))
      my_sum = sum(row[0] for row in table if row[2] == 9) 
      # assert my_sum == 10
    
      my_lst = [row[0] for row in table if row[2] == 9]
      # all row[2] == 9 therefore OrderBy is a no-op in your example 
      # assert my_lst == [8, 2]
    

Modified example:

    
    
      myLst = From(table) \
            .Where(lambda column: column[2]==9) \
            .OrderBy(lambda column: column[1])  \
            .Select(lambda column: column[0])
    
      my_lst = sorted((row[1], row[0]) for row in table if row[2] == 9)
      my_lst = map(itemgetter(1), my_lst)
      # assert my_lst == [2, 8]
    

Or to preserve order in case some row[1] are equal:

    
    
      my_lst = [row for row in table if row[2] == 9]
      my_lst.sort(key=itemgetter(1)) # requires "lambda"
      my_lst = [row[0] for row in my_lst]
      # assert my_lst == [2, 8]

------
russell
Lambdas pretty much suck because there has not been a good brace-free syntax
proposal, There was a pretty good proposal for a where clause a couple of
years ago, but it doesn't seem to have gotten any traction, probably because
it was not made into a PEP (see python.org about PEP's).

[http://groups.google.com/group/comp.lang.python/browse_threa...](http://groups.google.com/group/comp.lang.python/browse_thread/thread/b3fdc42e8df48fe6/050c4a9e8e10a7cf#050c4a9e8e10a7cf)

------
jcl
As a side note, you don't need the line continuation characters if you wrap
the expression in parentheses.

------
arnorhs
is what a good idea in python?

~~~
gaius
From the article:

    
    
        #
        #Problem: all these lambdas suck. Any better ways to do it?
        #
     
        #
        #TODOS/QUESTIONS:
        #
        #1. is it a good idea?
        #
        #2. can it be made to not suck (do something with all those lambdas)?

~~~
run4yourlives
Issue being that how can anyone answer those two questions without
understanding the problem he/she is attempting to solve?

It very well might be the only way to solve the issue given external
constraints, but it may also be the case that, for example, reworking the
problem space would lend itself to a much more elegant solution.

Code should never be treated as if it exists in some sort of bubble.

