我有一个类的实例列表:
>>> class A:
...
... def __init__(self,l=None):
... self.data=l
>>> k=list()
>>> for x in range(5):
... k.append(A(x))
现在我需要将'data'字段与给定列表相交
>>> m=[0,2]
>>> f=set([r.data for r in k]) & set(m)
>>> f
set([0, 2])
到目前为止一切顺利。 但是现在,我需要得到'A'的实例,其中'数据'的交集'f'中有一个值。
是否有更简单的方法来实现所有这些 - 而不是再次迭代实例?
答案 0 :(得分:1)
您可以使用列表理解:
>>> [x for x in k if x.data in f]
[<__main__.A instance at 0x92b1c0c>, <__main__.A instance at 0x92b1c4c>]
答案 1 :(得分:0)
在迭代时,您可以检查该项目是否在m
列表中。
class A:
def __init__(self,l=None):
self.data=l
result=[]
k=list()
m=[0,2]
for x in range(5):
some_A= A(x)
k.append(someA)
if x in m:
result.append(someA)
print result
[<__main__.A instance at 0x021CBEB8>, <__main__.A instance at 0x021CBF08>]