从python中的列表创建生成器表达式

dis*_*cer 3 python functional-programming list generator

在Python中执行以下操作的最佳方法是什么:

for item in [ x.attr for x in some_list ]:
    do_something_with(item)
Run Code Online (Sandbox Code Playgroud)

这可能是一个小问题,但是列表理解不是生成我们不需要的新列表而只是占用内存吗?如果我们能够制作类似迭代器的列表理解,那不是更好吗?

Phi*_*hil 9

是(对你的两个问题).

通过使用括号而不是括号,您可以为该序列创建所谓的"生成器表达式",这完全符合您的建议.它允许您迭代序列而不分配列表以同时保存所有元素.

for item in (x.attr for x in some_list):
    do_something_with(item)
Run Code Online (Sandbox Code Playgroud)

生成器表达式的详细信息记录在PEP 289中.