This just in from the Ministry of Subtle Bugs:
def f():
print("false")
return False
result = all(func() for func in [f, f, f])
print("just comprehension", result)
only prints 'false' once before printing "just comprehension", but
result = all(list(func() for func in [f, f, f]))
print("with list", result)
prints 'false' three times before printing "with list". I understand why, but damn, this one was hard to spot.