避免在列表理解中计算相同的表达式两次[重复]

2024-06-03

我在列表理解中使用一个函数和一个 if 函数:

new_list = [f(x) for x in old_list if f(x) !=0]

令我恼火的是这个表达f(x)在每个循环中计算两次。

有没有办法以更清洁的方式做到这一点?类似于存储值或在列表理解的开头包含 if 语句。


您可以在列表理解中使用生成器表达式(以避免创建不必要的列表):

new_list = [fx for fx in (f(x) for x in old_list) if fx != 0]

从 python 3.8 开始你将能够做到this https://www.python.org/dev/peps/pep-0572/#simplifying-list-comprehensions:

new_list = [fx for x in old_list if (fx := f(x)) != 0]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

避免在列表理解中计算相同的表达式两次[重复] 的相关文章

随机推荐