我在列表理解中使用一个函数和一个 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(使用前将#替换为@)