What is the best way to do the following in Python:
for item in [ x.attr for x in some_list ]:
do_something_with(item)
This may be a nub question, but isn’t the list comprehension generating a new list that we don’t need and just taking up memory? Wouldn’t it be better if we could make an iterator-like list comprehension.
Yes (to both of your questions).
By using parentheses instead of brackets you can make what’s called a “generator expression” for that sequence, which does exactly what you’ve proposed. It lets you iterate over the sequence without allocating a list to hold all the elements simultaneously.
The details of generator expressions are documented in PEP 289.