实例数据和列表的交集

时间:2013-05-28 13:55:08

标签: python

我有一个类的实例列表:

>>> 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'中有一个值。

是否有更简单的方法来实现所有这些 - 而不是再次迭代实例?

2 个答案:

答案 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>]