如果不在列表中如何挤压

时间:2014-08-14 22:03:02

标签: python

以下代码:

class MyClass(object):
    def __init__(self, myList):
        super(MyClass, self).__init__()
        self.myList = myList
    def getList(self):
        return self.myList

inst_list=[]
for i in range(3):
    inst_list.append(MyClass([1,2,3, None]))

result=[]
result+=[inst for inst in inst_list if inst.getList() for inst in inst.getList() if inst]

print result

结果:

[1, 2, 3, 1, 2, 3, 1, 2, 3]

如何修改:

[inst for inst in isnt_list if inst.getList() for inst in inst.getList() if inst]

所以如果数字已经在结果列表中,它不会添加数字吗?

我试过了:

result+=[inst for inst in isnt_list if inst.getList() for inst in inst.getList() if (inst and not inst in result)]

但它对我不起作用。

1 个答案:

答案 0 :(得分:2)

如果订单无关紧要,您需要设置

result = {v for inst in isnt_list for v in inst.getList()}

这使用集合理解来构建集合对象。