Functions

Any function that does not have return statement, it will return None

newitems = []
for item in items:
    newitems.append(do(item))

this for loop can be transformed to following list comprehension

[do(item) for item in items]
newitems = []
for item in items:
    if cond(item):
       newitems.apppend(do(item))
[do(item) for item in items if cond(item)]

Bonus problem

Functions as arguments

problem

Bonus problem