vle*_*tre 2 python list-comprehension python-3.x
我在列表理解中使用一个函数和一个 if 函数:
new_list = [f(x) for x in old_list if f(x) !=0]
Run Code Online (Sandbox Code Playgroud)
令我烦恼的是,该表达式f(x)在每个循环中计算两次。
有没有办法以更清洁的方式做到这一点?类似于存储值或在列表理解的开头包含 if 语句。
您可以在列表理解中使用生成器表达式(以避免创建不必要的列表):
new_list = [fx for fx in (f(x) for x in old_list) if fx != 0]
Run Code Online (Sandbox Code Playgroud)
从 python 3.8 开始,您将能够执行以下操作:
new_list = [fx for x in old_list if (fx := f(x)) != 0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |