Is there a map without result in python?
How about this?
for x in wowList:
installWow(x, 'installed by me')
del x
You could make your own "each" function:
def each(fn, items):
for item in items:
fn(item)
# called thus
each(lambda x: installWow(x, 'installed by me'), wowList)
Basically it's just map, but without the results being returned. By using a function you'll ensure that the "item" variable doesn't leak into the current scope.
You can use the built-in any
function to apply a function without return statement to any item returned by a generator without creating a list. This can be achieved like this:
any(installWow(x, 'installed by me') for x in wowList)
I found this the most concise idom for what you want to achieve.
Internally, the installWow
function does return None
which evaluates to False
in logical operations. any
basically applies an or
reduction operation to all items returned by the generator, which are all None
of course, so it has to iterate over all items returned by the generator. In the end it does return False
, but that doesn't need to bother you. The good thing is: no list is created as a side-effect.
Note that this only works as long as your function returns something that evaluates to False
, e.g., None
or 0. If it does return something that evaluates to True
at some point, e.g., 1
, it will not be applied to any of the remaining elements in your iterator. To be safe, use this idiom mainly for functions without return statement.