1 python
这是我想要做的示例代码...
class A():
number = 0
List = []
for i in range(5):
state = A()
state.number = i
List.append(state)
print List
Numbers = [1,2,3]
Run Code Online (Sandbox Code Playgroud)
现在,我想在其列表中删除类的对象number
是Numbers
.最快的方法是什么?此外,如果有人可以建议更多的pythonic方式这样做,而不是简单地创建两个for
循环,一个用于Numbers
其他的循环List
,然后从中删除List
.
首先,而不是像下面A.number
那样有一个类变量:
class A():
number = 0
Run Code Online (Sandbox Code Playgroud)
你通常应该编写一个只在实例上__init__
设置的方法number
.
class A(object):
def __init__(self, number):
self.number = number
Run Code Online (Sandbox Code Playgroud)
现在,您的其余代码可以简单地编写为:
List = [A(i) for i in range(5)]
print List
Run Code Online (Sandbox Code Playgroud)
要有效地查找项目(没有两个循环),您需要设置:
Numbers = set([1,2,3])
Run Code Online (Sandbox Code Playgroud)
x in Numbers
现在需要不断的时间.否则,Python必须遍历List才能找到一个数字.
您想要的结果如下:
filtered = [a for a in List if a.number in Numbers]
Run Code Online (Sandbox Code Playgroud)