list-comprehension and map question (simple)

Charles Hartman charles.hartman at conncoll.edu
Sun Mar 27 13:35:29 EST 2005


On Mar 27, 2005, at 1:18 PM, Brian van den Broek wrote:

> >>> def some_arbitrary_function(y):
> ... 	return ( (y * 42) - 19 ) % 12
> ...
> >>> [some_arbitrary_function(len(x)) for x in lines.split()]
> [5, 5, 11, 11, 5, 11, 5, 11]
> >>>
>
>
> I could be missing some edge cases, but it seems to me that if you 
> have list comps you don't really need map, filter, and the like. The 
> map portion can be done by nested function applications in the list 
> comp itself.

A good point, and I think I see that. But ultimately what I'm wondering 
is whether a construction like this [1]:

         for s in possScansions:
             for a in algorithms:
                 (feet, test) = self.DoAlgorithm(a, s)
                 complexities[(s, a)] = (self._measureComplexity(feet, 
test), len(feet))

can be condensed in one or more of these ways. (Whether the result 
would be readable / maintainable is a separate question. So is whether 
it would be more efficient. At the moment I'm just trying to get clear 
about the syntax.)

[1] possScansions is a list of strings; algorithms is a list of ints; 
feet is a list of strings; test is a list of Booleans. complexities is 
a dictionary whose keys are those two-item tuples and whose values are 
the integers returned by self._measureComplexity

Charles Hartman




More information about the Python-list mailing list