0

我有一个类的实例列表:

>>> class A:
...     
...     def __init__(self,l=None):
...         self.data=l

>>> k=list()
>>> for x in range(5):
...     k.append(A(x))

现在我需要将“数据”字段与给定列表相交

>>> m=[0,2]
>>> f=set([r.data  for r in k]) & set(m)
>>> f
set([0, 2])

到目前为止,一切都很好。但是现在,我需要获取具有“数据”的“A”实例,该实例具有交集“f”中的值。

有没有更简单的方法来实现所有这些——而不是再次遍历实例?

4

2 回答 2

1

您可以使用列表推导:

>>> [x for x in k if x.data in f]
[<__main__.A instance at 0x92b1c0c>, <__main__.A instance at 0x92b1c4c>]
于 2013-05-28T14:01:03.320 回答
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>]
于 2013-05-28T14:01:58.750 回答