sti*_*roc 3 python list-comprehension
以下是基本逻辑:
result = []
for item in item_lst:
code = foo(item)
if code != -1:
result.append(code)
Run Code Online (Sandbox Code Playgroud)
有了列表理解,我应该写两次:
result = [foo(item) for item in item_lst]
result = [code for code in result if code != -1]
Run Code Online (Sandbox Code Playgroud)
要么
result = [foo(item) for item in item_lst if foo(item) != -1]
Run Code Online (Sandbox Code Playgroud)
它将两次调用函数foo。
有没有更好的解决方案?
您可以使用生成器表达式来避免创建第二个列表:
result = [code for code in (foo(item) for item in item_ls) if code != -1]
Run Code Online (Sandbox Code Playgroud)
这里:
(foo(item) for item in item_ls)
Run Code Online (Sandbox Code Playgroud)
是一个生成器表达式。没有创建中间列表。这可能有助于节省内存。
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |