Skip to main content
 首页 » 编程设计

python之在此代码中删除对象的最快和pythonic方式

2025年05月04日12zhujiabin

这是我想做的事情的示例代码...

class A(): 
number = 0 
List = [] 
for i in range(5): 
    state = A() 
    state.number = i 
    List.append(state) 
print List 
Numbers = [1,2,3] 

现在我想删除List中number在Numbers中的类对象。最快的方法是什么?此外,如果有人可以建议一种比简单地创建两个 for 循环更 pythonic 的方法,一个用于 Numbers 的循环,另一个用于 List 和然后从 List 中删除。

请您参考如下方法:

首先,不是像 A.number 这样的类变量:

class A(): 
    number = 0 

您通常应该编写一个 __init__ 方法来仅在实例上设置 number。

class A(object): 
    def __init__(self, number): 
        self.number = number 

现在您的其余代码可以简单地编写为:

List = [A(i) for i in range(5)] 
print List 

要有效地查找项目(无需两个循环),您需要集合:

Numbers = set([1,2,3])  

x in Numbers 现在需要常数时间。否则 Python 将不得不循环遍历 List 以找到一个数字。

你想要的结果是这样的:

filtered = [a for a in List if a.number in Numbers]