Noufal Ibrahim wrote:
bob gailer wrote:


2) "looks bad" and "is ugly" are emotional responses. What are you feeling and wanting when you say those things?

It's hard for me to qualify really but my general idea of list comprehensions is that they transform and filter lists creating other lists.

For instance, I'd call this
if key in foo:
  return foo[key]
else:
  return 'unknown'

'ugly' when compared to

return foo.get(key,'unknown')

I guess I'm looking for the idiomatic way of performing such an operation. My gut feel tells me that the zeroth element of a list comprehension is not the right way to go but I wanted confirmation/rebuttal.

I suggest writing the algorithm in step-by-step pseudocode then asking "how can I write this in Python"?

High level goal: Given a list of numbers, return the first that meets a condition. If none meet the condition, return 'unknown'.
Step-by-step process in pseudocode:

for each element in list
 see if it meets the condition
 if it does
   stop and return the element
if we have not stopped
 return 'unknown'

How many ways are there in Python to go thru a list (and apply a function to each element)? The ones I know are:
while
for
list comprehension
map()

I discard while as for takes less code and is easier to understand.
I discard map() as it is the "old way" to do a comprehension.

That leaves for and comprehension.

The advantage of for is that you can stop the process once you find the desired element.
The advantage of comprehension is compactness and readability.

You must work with the tools available (or write your own). But the heart of anything you write will be the original pseudocode.

Then you must live with any emotional reactions.

--
Bob Gailer
Chapel Hill NC 919-636-4239

_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to