python - 避免在列表理解中计算相同的表达式两次

标签 python python-3.x list-comprehension

<分区>

我在列表推导式和 if 函数中使用一个函数:

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

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

有没有一种更简洁的方法?类似于存储值或在列表理解的开头包含 if 语句。

最佳答案

预先计算结果并迭代它们

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

此外,由于 map 在访问元素时计算每个元素的结果,因此这只是一个循环。

关于python - 避免在列表理解中计算相同的表达式两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56967363/

相关文章:

Python:x[i,:] 和 x[i][:] 之间有什么区别

python - 在Python中返回数字符号的奇怪语法

python numpy argsort问题

python - 是否有一个包可以在 python 中运行蒙特卡罗交叉验证?

python - 验证用户帐户在 Django Rest Framework 中是否处于事件状态

python-3.x - Bitwise_and 函数返回错误断言失败且掩码相同

Python请求不会通过get方法中的参数添加查询字符串

python - 如何更快地从列表中删除包含某些单词的字符串

python - 如何在列表理解中按函数返回值执行过滤器?

python - 在 Django 中不属于您网站的抽象网址