Maybe it's just too early in the morning for me or I don't know enough about Python, but why would the OPs code snippet keep the list in memory, and why is yours an improvement?
Also, is this something you could handwave because of Python's garbage collection, or is that not going to help in this case?