首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >避免在列表理解中计算相同的表达式两次

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

Stack Overflow用户
提问于 2019-07-10 01:14:33
回答 4查看 617关注 0票数 2

我在列表理解中使用了一个函数,并使用了一个if函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new_list = [f(x) for x in old_list if f(x) !=0]

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

有更干净的方法吗?在列表理解的开头存储值或包含if语句的内容。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-10 01:18:57

预先计算结果并迭代它们。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new_list = [x for x in map(f, old_list) if x !=0]

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

票数 4
EN

Stack Overflow用户

发布于 2019-07-10 01:24:43

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new_list = [fx for fx in (f(x) for x in old_list) if fx != 0]

从python3.8开始,您将能够执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new_list = [fx for x in old_list if (fx := f(x)) != 0]
票数 4
EN

Stack Overflow用户

发布于 2019-07-10 01:19:04

在Python3.8中,我们将拥有“海象操作员”并能够做到这一点!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[y for x in old_list if (y := f(x)) != 0]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56967363

复制
相关文章
在货币计算中应该避免浮点数
float和double数据类型对金融计算(甚至是军事用途)都是有害的,永远不要用它们来进行货币计算。如果精度是您的需求之一,那么使用BigDecimal。
程序你好
2018/09/29
2.5K0
在货币计算中应该避免浮点数
Python列表dict中相同key的字典相加
总结为: 1.去重id 2.通过去重id生成count值为空的dict 3.先循环目标数据,再循环去重后的dict 通过if判断,相同则相加,不同则跳过,这样就达到了dict相加的目的 # 怎么把列表中相同key的字典相加,也就是id的值加id的值,doc_count的值加doc_count的值 # 目标列表 l=[{'id': 5, 'doc_count': 129}, {'id': 1, 'doc_count': 3}, {'id': 1, 'doc_count': 64}] #统计ID
kirin
2021/03/12
4.8K0
【Python】列表 List ① ( 数据容器简介 | 列表 List 定义语法 | 列表中存储类型相同的元素 | 列表中存储类型不同的元素 | 列表嵌套 )
Python 中的 数据容器 数据类型 可以 存放多个数据 , 每个数据都称为 元素 , 容器 的 元素 类型可以是任意类型 ;
韩曙亮
2023/10/11
3250
【Python】列表 List ① ( 数据容器简介 | 列表 List 定义语法 | 列表中存储类型相同的元素 | 列表中存储类型不同的元素 | 列表嵌套 )
在Eclipse中中tomcat会启动两次
Eclipse中使用自己安装的tomcat时默认web工程发布路径是wtpwebapps,而不是webapps,如果修改为webapps,此时在Eclipse中启动tomcat时,tomcat会加载两次。解决办法,删除掉tomcat重新添加一次,添加的时候注意不要点击下一步,直接点击完成,然后在Eclipse中修改tomcat的加载路径参数,如果点击下一步直接发布项目了,就无法修改项目发布到tomcat安装目录下还是Eclipse的目录下了。
西门呀在吹雪
2020/11/09
1.1K0
如何理解和使用Python中的列表
Python有6个序列的内置类型,但最常见的是列表和元组。今天我们就来讲讲列表。
小土豆Yuki
2020/06/15
7K0
iOS多个线程发起相同请求,避免重复
有时候在调用多个模块时,会对同一个API进行多次请求,但因为内容都是一样的,所以最好就是加上锁,防止重复请求造成网络资源浪费
freesan44
2019/08/23
1.7K0
实操指南|关于Python中的列表理解
列表理解通常在Python中用于编写单行语句,这些语句通过循环访问可迭代对象来创建新列表或字典。本文将首先介绍有关for循环在Python中的工作原理,然后说明如何在Python中使用列表理解。
用户6543014
2020/02/25
1.5K0
在单链表中删除值相同的多余节点的算法
思路:分别使用两个指针p和q, 因为可能q->val==p->val时,此时要删除q所指向的节点,所以需要一个s指针记录q,防止发生断链。
lexingsen
2022/02/24
2.5K0
【译】如何避免在JavaScript中阻塞DOM
原文链接:https://www.sitepoint.com/avoiding-dom-blocking/
腾讯IVWEB团队
2020/06/28
2.8K0
避免 SwiftUI 视图的重复计算
随着近年来有关 SwiftUI 的文章与书籍越来越多,开发者应该都已经清楚地掌握了 —— “视图是状态的函数” 这一 SwiftUI 的基本概念。每个视图都有与其对应的状态,当状态变化时,SwiftUI 都将重新计算与其对应视图的 body 值。
东坡肘子
2022/08/03
9.3K0
避免 SwiftUI 视图的重复计算
Python元组与列表的相同点与区别
列表和元组都属于有序序列,支持使用双向索引访问其中的元素、使用内置函数len()统计元素个数、使用运算符in测试是否包含某个元素、使用count()方法统计指定元素的出现次数和index()方法获取指定元素的索引。虽然有着一定的相似之处,但列表和元组在本质上和内部实现上都有着很大的不同。 元组属于不可变(immutable)序列,一旦创建,不允许修改元组中元素的值,也无法为元组增加或删除元素。因此,元组没有提供append()、extend()和insert()等方法,无法向元组中添加元素;同样,元组也没有
Python小屋屋主
2018/04/16
1.7K0
如何解决emlog列表分页标题相同的问题
Emlog程序默认的分页title都一模一样,造成很多同名页面,关键词冲突;以下是解决这个问题的方法。
用户8099761
2023/05/10
4010
WPF 在绑定表达式添加计算
很多时候一些简单的使用绑定需要对绑定的源做处理就需要通过转换器,这样的代码写起来不好看 本文告诉大家通过一个简单的库可以实现在界面绑定的时候通过表达式不需要转换
林德熙
2019/03/13
5.1K0
WPF 在绑定表达式添加计算
在Java中如何避免“!=null”式的判空语句?
我整天都是在跟Java打交道。我在Java开发中最常用的一段代码就是用object != null在使用对象之前判断是否为空。这么做是为了避免NullPointerException。但是我发现这样检测代码实在是太丑了,而且及其不可读。
哲洛不闹
2018/09/14
2.2K0
WPF 在绑定表达式添加计算
很多时候一些简单的使用绑定需要对绑定的源做处理就需要通过转换器,这样的代码写起来不好看 本文告诉大家通过一个简单的库可以实现在界面绑定的时候通过表达式不需要转换
林德熙
2022/08/04
8070
在Java中如何避免“!=null”式的判空语句?
我整天都是在跟Java打交道。我在Java开发中最常用的一段代码就是用object != null在使用对象之前判断是否为空。这么做是为了避免NullPointerException。但是我发现这样检测代码实在是太丑了,而且及其不可读。
哲洛不闹
2018/09/18
5.3K0
在iview中实现列表远程排序
iview中可以通过给列表中每个字段设置sortable: true可以实现字段排序,但是当列表中的数据量比较多时,列表中会有分页,此时只能对当前页进行排序,针对这个问题,iview中有一个远程排序功能,可以通过远程排序实现多页数据的排序
用户3880999
2023/04/13
1.9K0
在iview中实现列表远程排序
Vue中的set、delete方法在列表渲染中的使用
不知大家是否有过类似的经历,比如说for循环渲染数组或者对象中的数据,渲染完成后,给数组或者对象添加、修改、删除数据后却没有在页面中渲染出来。
砖业洋__
2023/05/06
3.3K0
Vue中的set、delete方法在列表渲染中的使用
在Java中如何避免“!=null”式的判空语句?
我整天都是在跟Java打交道。我在Java开发中最常用的一段代码就是用object != null在使用对象之前判断是否为空。这么做是为了避免NullPointerException。但是我发现这样检测代码实在是太丑了,而且及其不可读。
哲洛不闹
2018/09/19
3.4K0
点击加载更多

相似问题

列表理解和生成器,以避免在使用条件表达式时两次计算相同的值

11

避免在Python中重新计算相同的表达式

428

Python列表理解-希望避免重复计算

126

Prolog避免两次生成相同的列表

10

如何避免在SQL中多次计算相同的表达式

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文