Py学习  »  Python

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

Cflowe Visit • 3 年前 • 1366 次点击  

如何在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
 
1366 次点击  
文章 [ 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列表的理解(注:希望添加更多)。