社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何在python中使用“removeIf”?[重复]

Cflowe Visit • 3 年前 • 1215 次点击  

如何在python中使用“removeIf”? 在java中,我可以使用:

list.removeIf(c -> c.num > 5);

但在python中如何做到这一点?如果我使用for循环:

for c in list:
    if (c.num > 5):
        list.remove(c)

它会变慢,所以我怎样才能在python中更快地做到这一点呢?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130589
 
1215 次点击  
文章 [ 2 ]  |  最新文章 3 年前
BrokenBenchmark
Reply   •   1 楼
BrokenBenchmark    3 年前

使用列表理解:

data = [x for x in data if x.num > 5]

请注意,您需要执行以下操作: 一些 对数据进行迭代排序,以确定是保留还是删除结果中的元素。(即使迭代结构不是显式的,无论你使用什么,都可能会在幕后使用迭代。)一般来说,在迭代列表时修改列表是个坏主意。

oda
Reply   •   2 楼
oda    3 年前

python list 对象没有与具有相同功能的内置方法 removeif 在爪哇。

只使用Python代码/内置程序的最佳选择可能是

my_list = [3, 8, 2, 9] 
my_list = [elem for elem in my_list if elem > 5] 

我知道这并不能解决你对速度的担忧。但是,如果您想使用Python 列表 不需要编写C代码来构造 移除 方法 列表 对象(或变体),这是不可能的。

在…上 numpy (主要用C写)你可以

import numpy as np 

a = np.array([3, 8, 2, 9])
a = a[(a > 5)] 

我发现对大型数组/列表的理解速度明显快于对Python列表的理解(注:希望添加更多)。