class Bear: pass class Fish: pass things = [Bear(), Bear(), Fish(), Bear(), Fish()] def getPopulation(species): count = 0 for thing in things: if isinstance(thing, species): count = count + 1 return count def getPopulation2(species): return sum([1 for thing in things if isinstance(thing, species)]) def getPopulation3(species): uncheckedThings = things[:] count = 0 while len(uncheckedThings) > 0: thing = uncheckedThings.pop() if isinstance(thing, species): count = count + 1 return count def getPopulation4(species): return getPopulationIn(species, things) def getPopulationIn(species, listOfThings): if listOfThings == []: return 0 elif len(listOfThings) == 1: if isinstance(listOfThings[0], species): return 1 else: return 0 else: half = len(listOfThings) // 2 leftSubPopulation = getPopulationIn(species, listOfThings[:half]) rightSubPopulation = getPopulationIn(species, listOfThings[half:]) return leftSubPopulation + rightSubPopulation