这是我想做的事情的示例代码...
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]
