<分区>
我在列表推导式和 if 函数中使用一个函数:
new_list = [f(x) for x in old_list if f(x) !=0]
令我恼火的是,表达式 f(x)
在每个循环中计算了两次。
有没有一种更简洁的方法?类似于存储值或在列表理解的开头包含 if 语句。
<分区>
我在列表推导式和 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/