9
I need to filter a large lists several times, but I'm concerned with both simplicity of code and execution efficiency. To give an example:
all_things # huge collection of all things
# inefficient but clean code
def get_clothes():
return filter(lambda t: t.garment, allThings)
def get_hats():
return filter(lambda t: t.headgear, get_clothes())
I'm concerned that I'm iterating over the clothes list when in fact it has already been iterated over. I also want to keep the two filter operations separate, as they belong to two different classes, and I do not want to duplicate the first lambda function in the hats class.
# efficient but duplication of code
def get_clothes():
return filter(lambda t: t.garment, allThings)
def get_hats():
return filter(lambda t: t.headgear and t.garment, allThings)
I have been investigating generator functions, as they seemed like the way to go, but I haven't as yet figure out how.